动态分区不能是静态分区'3'的父级

问题描述 投票:3回答:1

使用以下查询将数据插入表格配置单元时,会出现错误“动态分区不能成为静态分区的父级”3'

INSERT INTO TABLE student_partition PARTITION(课程,年份= 3)SELECT name,id,course FROM student1 WHERE year = 3;

请解释原因..

hive hiveql partition
1个回答
3
投票

此异常的原因是因为分区是分层文件夹。 course文件夹是上层,year是每年的嵌套文件夹。

当您动态创建分区时,应首先创建上层文件夹(课程)然后嵌套year=3文件夹。

year=3已知之前,您提前(静态地)提供course分区。

反之亦然:静态父分区和动态子分区。

在HDFS分区文件夹中是这样的:

/student_partition/course=chemistry/year=3
/student_partition/course=chemistry/year=4
/student_partition/course=philosophy/year=3

静态分区应该存在。但如果父母尚不存在,它就不存在。

或者你也可以使year分区动态:

INSERT INTO TABLE student_partition PARTITION(course , year) 
SELECT name, id, course, 3 as year --or just simply year 
  FROM student1 WHERE year = 3;
© www.soinside.com 2019 - 2024. All rights reserved.