Hiveの次のトリックを使用して、テーブルから列名を取得できることを知っています。
Hive> set Hive.cli.print.header=true;
Hive> select * from tablename;
justテーブルから列名を取得することも可能ですか?
一度だけ必要なものの設定を変更するのが嫌いです。
私の現在のソリューションは次のとおりです。
Hive> set Hive.cli.print.header=true;
Hive> select * from tablename;
Hive> set Hive.cli.print.header=false;
これは冗長すぎて、DRYの原則に反しているようです。
列名だけを表示したい場合は、この1行で設定を変更せずに列名を提供する必要があります。
describe database.tablename;
ただし、ご使用のバージョンのHiveでそれが機能しない場合、このコードは提供しますが、デフォルトのデータベースは現在使用しているデータベースになります。
use database;
describe tablename;
また、show columns in $table
を実行するか、または Hive、データベースのすべてのテーブル列を取得する方法 を使用して、Hiveメタデータにアクセスすることもできます。
hive CLIまたはbeelineからdesc tablename
を使用して、すべての列名を取得します。ファイルに列名が必要な場合は、シェルから以下のコマンドを実行します。
$ Hive -e 'desc dbname.tablename;' > ~/columnnames.txt
ここで、dbname
は、テーブルが存在するHiveデータベースの名前です。ファイルcolumnnames.txtは、ルートディレクトリにあります。
$cd ~
$ls