Как узнать местоположение о разделе в улье? - программирование
Подтвердить что ты не робот

Как узнать местоположение о разделе в улье?

Если я напишу куст sql, например

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

Как я могу запросить это местоположение о разделе позже? Потому что я обнаружил, что есть некоторые данные в местоположении, но я не могу запросить их, куст sql, например

SELECT data FROM tbl_name where dt=20131023;
4b9b3361

Ответ 1

show table extended like 'tbl_name' partition (dt='20131023');

Показать таблицы/разделы расширены

SHOW TABLE EXTENDED будет перечислять информацию для всех таблиц, соответствующих данному регулярному выражению. Пользователи не могут использовать регулярное выражение для имени таблицы, если присутствует спецификация раздела. Вывод этой команды включает в себя основную информацию о таблице и информацию о файловой системе, например totalNumberFiles, totalFileSize, maxFileSize, minFileSize, lastAccessTime и lastUpdateTime. Если раздел присутствует, он выведет информацию о файловой системе данного раздела вместо информации о файловой системе таблицы.

Ответ 2

Сделайте описание в разделе вместо полной таблицы. Это будет отображаться связанное местоположение, если это внешняя таблица.

describe formatted tbl_name partition (dt='20131023')

Ответ 3

Если у вас несколько вложенных разделов, синтаксис:

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

Ответ 4

Это формат команды, которую я использую, чтобы получить точное местоположение HDFS определенного раздела в определенной таблице:

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

В приведенной выше команде спецификация раздела состоит из трех отдельных полей. Ваш пример может иметь больше или меньше.

Смотрите результаты ниже. Обратите внимание, что поле "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>);