如果我写一个像
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;
wgx48brx1#
您可以简单地执行以下操作:
DESC FORMATTED tablename PARTITION (yr_no='y2019'); OR DESC EXTENDED tablename PARTITION (yr_no='y2019');
vd8tlhqk2#
这是我用来获取特定表中特定分区的确切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>);
uxhixvfz3#
对分区而不是整个表进行描述。如果是外部表,这将显示链接位置。
describe formatted tbl_name partition (dt='20131023')
hjzp0vay4#
如果您想知道正在读取的文件的位置,请使用
SELECT INPUT__FILE__NAME, BLOCK__OFFSET__INSIDE__FILE FROM <table> WHERE <part_name> = '<part_key>'
然后你得到
hdfs:///user/hive/warehouse/<db>/<table>/<part_name>=<part_key>/000000_0.snappy, 0 hdfs:///user/hive/warehouse/<db>/<table>/<part_name>=<part_key>/000000_1.snappy, 0
31moq8wy5#
show table extended like 'tbl_name' partition (dt='20131023');
显示扩展的表/分区 SHOW TABLE EXTENDED 将列出与给定正则表达式匹配的所有表的信息。如果存在分区规范,则用户不能对表名使用正则表达式。此命令的输出包括基本表信息和文件系统信息,如 totalNumberFiles , totalFileSize , maxFileSize , minFileSize , lastAccessTime ,和 lastUpdateTime . 如果存在分区,它将输出给定分区的文件系统信息,而不是表的文件系统信息。
SHOW TABLE EXTENDED
totalNumberFiles
totalFileSize
maxFileSize
minFileSize
lastAccessTime
lastUpdateTime
ht4b089n6#
如果有多个嵌套分区,则语法为:
describe formatted table_name partition (day=123,hour=2);
kx1ctssn7#
您可以通过运行以下任何配置单元命令来获取hdfs上配置单元分区的位置。
DESCRIBE FORMATTED tbl_name PARTITION(dt=20131023); SHOW TABLE EXTENDED LIKE tbl_name PARTITION(dt=20131023);
或者,也可以通过运行hdfs list命令
hdfs dfs -ls <your Hive store location>/<tablename>
链接:配置单元显示或列出所有分区谢谢,nnk
7条答案
按热度按时间wgx48brx1#
您可以简单地执行以下操作:
vd8tlhqk2#
这是我用来获取特定表中特定分区的确切hdfs位置的命令格式:
在上面的命令中,分区规范由三个单独的字段组成。你的例子可能有或多或少的影响。
请参见下面的结果。注意,“location:”字段显示hdfs文件夹的位置。
命令的一般形式(去掉我的特定值并放入参数说明符)如下所示:
uxhixvfz3#
对分区而不是整个表进行描述。
如果是外部表,这将显示链接位置。
hjzp0vay4#
如果您想知道正在读取的文件的位置,请使用
然后你得到
31moq8wy5#
显示扩展的表/分区
SHOW TABLE EXTENDED
将列出与给定正则表达式匹配的所有表的信息。如果存在分区规范,则用户不能对表名使用正则表达式。此命令的输出包括基本表信息和文件系统信息,如totalNumberFiles
,totalFileSize
,maxFileSize
,minFileSize
,lastAccessTime
,和lastUpdateTime
. 如果存在分区,它将输出给定分区的文件系统信息,而不是表的文件系统信息。ht4b089n6#
如果有多个嵌套分区,则语法为:
kx1ctssn7#
您可以通过运行以下任何配置单元命令来获取hdfs上配置单元分区的位置。
或者,也可以通过运行hdfs list命令
链接:配置单元显示或列出所有分区
谢谢,nnk