web-dev-qa-db-fra.com

Comment connaître l'emplacement de la partition dans la ruche?

Si j'écris un sql Hive comme

ALTER TABLE tbl_name ADD PARTITION (dt=20131023) LOCATION 'hdfs://path/to/tbl_name/dt=20131023;

Comment puis-je interroger cet emplacement sur la partition plus tard? Parce que j'ai trouvé qu'il y a des données dans l'emplacement mais je ne peux pas les interroger, Hive sql like

SELECT data FROM tbl_name where dt=20131023;
16
MoreFreeze
show table extended like 'tbl_name' partition (dt='20131023');

Afficher les tables/partitions étendues

SHOW TABLE EXTENDED listera les informations pour toutes les tables correspondant à l'expression régulière donnée. Les utilisateurs ne peuvent pas utiliser d'expression régulière pour le nom de table si une spécification de partition est présente. La sortie de cette commande inclut des informations de table de base et des informations sur le système de fichiers comme totalNumberFiles, totalFileSize, maxFileSize, minFileSize, lastAccessTime et lastUpdateTime. Si la partition est présente, elle affichera les informations sur le système de fichiers de la partition donnée au lieu des informations sur le système de fichiers de la table.

9
Remus Rusanu

Faites une description sur la partition au lieu de la table complète.
Cela montrera l'emplacement lié s'il s'agit d'une table externe.

describe formatted tbl_name partition (dt='20131023')
38
SamirK

Si vous avez plusieurs partitions imbriquées, la syntaxe est:

describe formatted table_name partition (day=123,hour=2);
10
chaqke

C'est le format de la commande que j'utilise pour obtenir l'emplacement HDFS exact d'une partition spécifique dans une table spécifique:

show table extended like flight_context_fused_record partition(date_key='20181013', partition_id='P-DUK2nESsv', custom_partition_1='ZMP');

Dans la commande ci-dessus, la spécification de partition se compose de trois champs distincts. Votre exemple peut en avoir plus ou moins.

Voir les résultats ci-dessous. Notez que le champ "emplacement:" affiche l'emplacement du dossier 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

La forme générique de la commande (extraire mes valeurs spécifiques et insérer des spécificateurs d'argument) ressemble à ceci:

show table extended like <your table name here> partition(<your partition spec here>);
0
vfisher