将数据插入表格配置单元时,使用以下查询抛出错误“动态分区不能成为静态分区的父级'3'”
INSERT INTO TABLE student_partition PARTITION(课程,年份= 3) SELECT name,id,course FROM student1 WHERE year = 3;
请解释原因..
答案 0 :(得分: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;