次のようなHive SQLを作成する場合
ALTER TABLE tbl_name ADD PARTITION (dt=20131023) LOCATION 'hdfs://path/to/tbl_name/dt=20131023;
パーティションに関するこの場所を後で照会するにはどうすればよいですか?場所にデータがあることがわかったが、クエリを実行できないため、Hive sql like
SELECT data FROM tbl_name where dt=20131023;
show table extended like 'tbl_name' partition (dt='20131023');
SHOW TABLE EXTENDED
は、指定された正規表現に一致するすべてのテーブルの情報をリストします。パーティションの指定が存在する場合、ユーザーはテーブル名に正規表現を使用できません。このコマンドの出力には、totalNumberFiles
、totalFileSize
、maxFileSize
、minFileSize
、lastAccessTime
、lastUpdateTime
などの基本的なテーブル情報とファイルシステム情報が含まれます。パーティションが存在する場合、テーブルのファイルシステム情報ではなく、指定されたパーティションのファイルシステム情報を出力します。
テーブル全体ではなく、パーティションでディスクリプションを実行します。
これは、外部テーブルの場合、リンク先を表示します。
describe formatted tbl_name partition (dt='20131023')
ネストされたパーティションが複数ある場合、構文は次のとおりです。
describe formatted table_name partition (day=123,hour=2);
これは、特定のテーブル内の特定のパーティションの正確なHDFSロケーションを取得するために使用するコマンドの形式です。
show table extended like flight_context_fused_record partition(date_key='20181013', partition_id='P-DUK2nESsv', custom_partition_1='ZMP');
上記のコマンドでは、パーティション仕様は3つの個別のフィールドで構成されています。あなたの例は多かれ少なかれ持っているかもしれません。
以下の結果を参照してください。 「location:」フィールドにHDFSフォルダーの場所が表示されていることに注意してください。
Hive (nva_test)> show table extended like flight_context_fused_record partition(date_key='20181013', partition_id='P-DUK2nESsv', custom_partition_1='ZMP');
OK
tableName:flight_context_fused_record
owner:nva-prod
location:hdfs://hdp1-ha/tmp/vfisher/cms-context-acquisition-2019-06-13/FlightContextFusedRecord/2018/10/13/ZMP/P-DUK2nESsv
inputformat:org.Apache.hadoop.Hive.ql.io.parquet.MapredParquetInputFormat
outputformat:org.Apache.hadoop.Hive.ql.io.parquet.MapredParquetOutputFormat
columns:struct columns { string primary_key, string facility, string position, i32 dalr_channel, i64 start_time_unix_millis, i64 end_time_unix_millis, string foreign_key_to_audio_segment, struct<on_frequency_flight_list:list<struct<acid:string,ac_type:string>>,transfer_list:list<struct<primary_key:string,acid:string,data_id:string,ac_type:string,from_facility:string,from_position:string,transition_time:i64,transition_time_start:i64,transtition_time_end:i64,to_facility:string,to_position:string,source:string,source_info:string,source_time:i64,confidence:double,confidence_description:string,uuid:string>>,source_list:list<string>,domain:string,domains:list<string>> flight_context}
partitioned:true
partitionColumns:struct partition_columns { i32 date_key, string partition_id, string custom_partition_1}
totalNumberFiles:1
totalFileSize:247075687
maxFileSize:247075687
minFileSize:247075687
lastAccessTime:1561122938361
lastUpdateTime:1561071155639
コマンドの一般的な形式(特定の値を取り出して引数指定子を入れる)は次のようになります。
show table extended like <your table name here> partition(<your partition spec here>);