web-dev-qa-db-ja.com

Hiveテーブルから列名を取得するだけです

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の原則に反しているようです。

37
cantdutchthis

列名だけを表示したい場合は、この1行で設定を変更せずに列名を提供する必要があります。

describe database.tablename;

ただし、ご使用のバージョンのHiveでそれが機能しない場合、このコードは提供しますが、デフォルトのデータベースは現在使用しているデータベースになります。

use database;
describe tablename;
62
JJFord3

また、show columns in $tableを実行するか、または Hive、データベースのすべてのテーブル列を取得する方法 を使用して、Hiveメタデータにアクセスすることもできます。

51

hive CLIまたはbeelineからdesc tablenameを使用して、すべての列名を取得します。ファイルに列名が必要な場合は、シェルから以下のコマンドを実行します。

$ Hive -e 'desc dbname.tablename;' > ~/columnnames.txt

ここで、dbnameは、テーブルが存在するHiveデータベースの名前です。ファイルcolumnnames.txtは、ルートディレクトリにあります。

$cd ~
$ls