Динамический раздел не может быть родителем статического раздела «3» - PullRequest
0 голосов
/ 07 мая 2018

При вставке данных в табличный куст выдает ошибку «Динамический раздел не может быть родительским для статического раздела« 3 »», используя следующий запрос

INSERT INTO TABLE student_partition PARTITION (курс, год = 3) ВЫБЕРИТЕ имя, идентификатор, курс ОТ студента1 ГДЕ год = 3;

Пожалуйста, объясните причину ..

1 Ответ

0 голосов
/ 07 мая 2018

Причина этого исключения в том, что разделы являются иерархическими папками. Папка 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;
...