Size: a a a

2020 January 24

AZ

Anton Zadorozhniy in Data Engineers
Роман
Допустим в location таблица подругому партиционирована
вам что сделать-то надо?
источник

Р

Роман in Data Engineers
Понять как это работает 😊
источник

A

Alex in Data Engineers
ну она и не подхватит у вас партиции автоматом, с чего вы решили что достаточно указать корневую директорию?
источник

A

Alex in Data Engineers
поэтому вопрос “Допустим в location таблица подругому партиционирована” некорректен
источник

Р

Роман in Data Engineers
Например есть таблица А она партиционирована по дате рождения. Делаем на основе нее внешнюю таблицу Б и партиционируем ее например по городам. А что с файлами и папками то будет тогда если это просто линк?
источник

AZ

Anton Zadorozhniy in Data Engineers
Роман
Например есть таблица А она партиционирована по дате рождения. Делаем на основе нее внешнюю таблицу Б и партиционируем ее например по городам. А что с файлами и папками то будет тогда если это просто линк?
если данные лежат в директориях по дате рождения вы не можете сделать из них внешнюю таблиц с другой схемой партицирования
источник

Р

Роман in Data Engineers
А если вообще не партиционирована?
источник

A

Alex in Data Engineers
тоже не будет
источник

AZ

Anton Zadorozhniy in Data Engineers
Роман
А если вообще не партиционирована?
то и внешняя таблица не будет партицирована
источник

A

Alex in Data Engineers
там же каждую партицию все равно нужно в мету прописывать
источник

A

Alex in Data Engineers
запрос show partition не лезет на hdfs, а ходит в метадату и говорит какие есть
так что если вы создаете екстернал партиционированную таблицу и не добавили там партиции через ддл,
то оно и не увидит их
источник

AZ

Anton Zadorozhniy in Data Engineers
как вариант можно заставить хайв сам находить партиции, MSCK команда позволяет по шаблону найти партиции в HDFS и добавить их в метастор
источник

A

Alex in Data Engineers
нет, ну это то можно, но по хорошему это тоже “почини таблицу” и требует внучную запускать
источник

AZ

Anton Zadorozhniy in Data Engineers
да, это ручной процесс (ну или в кроне)
источник

AZ

Anton Zadorozhniy in Data Engineers
например если у вас второй HDFS где-то сборку, и вы реплицируете данные туда, то для обновления метастора нужно периодически делать msck repair (и соблюдать правила именования директорий партиций, конечно)
источник

Р

Роман in Data Engineers
Тогда непонятно зачем есть опция создавать партиционированную external table просто указать для hive что считать ее также партиционированной как и исходная?
источник

Р

Роман in Data Engineers
А если не указать, тогда hive по всем папкам начнет делать фулскан?
источник

AZ

Anton Zadorozhniy in Data Engineers
Роман
Тогда непонятно зачем есть опция создавать партиционированную external table просто указать для hive что считать ее также партиционированной как и исходная?
многие создают внешние таблицы в hive без создания до этого managed таблиц, ну и очень удобно иметь эти партиции отдельно от данных, можно ими манипулировать
источник

AZ

Anton Zadorozhniy in Data Engineers
Роман
А если не указать, тогда hive по всем папкам начнет делать фулскан?
если не указать директории с партициями (а определение таблицы имеет партиции) то hive будет думать что таблица пустая)
источник

Р

Роман in Data Engineers
Спасибо, стало понятнее!
источник