我在配置单元中有客户管理的表,基于日期和客户名称进行分区。我的目录结构如下:
user/hive/warehouse/test.db/customer/date1=2021-09-16/customerName=xyz
当我做显示分区客户时,它没有给出输出。所以我尝试添加一个分区
MSCK REPAIR TABLE customer;
它给出错误执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1
ALTER TABLE customer ADD PARTITION (date1='2021-09-15') PARTITION (customerName='xyz');
它还给出错误 ValidationFailureSemanticException 分区规范 {customername=xyz} 包含非分区列
如何在 hive 元存储中添加这些分区。
hive> show create table customer;
OK
CREATE TABLE `customer`(
`act` string)
PARTITIONED BY (
`date1` string,
`customername` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
WITH SERDEPROPERTIES (
'path'='hdfs://hdcluster/user/hive/warehouse/test.db/customer')
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
'hdfs://hdcluster/user/hive/warehouse/test.db/customer'
TBLPROPERTIES (
'spark.sql.create.version'='2.4.0',
'spark.sql.partitionProvider'='catalog',
'spark.sql.sources.provider'='orc',
'spark.sql.sources.schema.numPartCols'='2',
'spark.sql.sources.schema.numParts'='1',
'spark.sql.sources.schema.part.0'=
'{\"type\":\"struct\",\"fields\":
[{\"name\":\"act\",\"type\":\"string\",\"nullable\":true,\"metadata\":
{}}, {\"name\":\"date1\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},
{\"name\":\"customername\",\"type\":\"string\",\"nullable\":true,\"metadata\
":{}}]}','spark.sql.sources.schema.partCol.0'='date1',
'spark.sql.sources.schema.partCol.1'='customername',
'transient_lastDdlTime'='1631781225')
试试这个:
ALTER TABLE customer
ADD PARTITION (date1='2021-09-15',customerName='xyz')
LOCATION
'hdfs://hdcluster/user/hive/warehouse/test.db/customer/date1=2021-09-15/customerName=xyz';