我很难让配置单元发现在hdfs中创建的分区
下面是hdfs中的目录结构
warehouse/database/table_name/A
warehouse/database/table_name/B
warehouse/database/table_name/C
warehouse/database/table_name/D
a、 b,c,d是一列中的值 type
使用以下语法创建配置单元表时
CREATE EXTERNAL TABLE IF NOT EXISTS
table_name(`name` string, `description` string)
PARTITIONED BY (`type` string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'hdfs:///tmp/warehouse/database/table_name'
我在查询表时看不到任何记录。
但是当我在hdfs中创建如下目录时
warehouse/database/table_name/type=A
warehouse/database/table_name/type=B
warehouse/database/table_name/type=C
warehouse/database/table_name/type=D
当我检查使用时,它工作并发现分区 show partitions table_name
配置单元中是否有一些配置能够将动态目录检测为分区?
1条答案
按热度按时间nzrxty8p1#
在某些目录上创建外部表是不够的,还需要挂载分区。Hive4.0.0中添加的发现分区功能。对早期版本使用msck修复表:
或等效于电子病历:
当您使用
insert overwrite
,正在自动创建分区元数据,分区文件夹的格式为key=value
.