Каковы допустимые типы данных столбца раздела в улье?

Я почти уверен, что сложные типы, такие как STRUCT, не могут быть типом столбца раздела. Но я не уверен, что все примитивные типы допустимы или нет. Я прочитал много документации, но ничего не нашел.


person Wang Zhong    schedule 25.04.2019    source источник


Ответы (1)


Допускаются только примитивные типы. и должно соответствовать максимальному ограничению имени файла (255- имя_столбца_длина-1 для знака равенства, точно не проверял) в UNIX, поскольку раздел является папкой.

Если вы попытаетесь создать таблицу со сложным типом в качестве раздела, это не удастся:

create table test_t(id int) partitioned by (somemap map<string, string>);

FAILED: SemanticException [Ошибка 10126]: Столбец раздела должен быть примитивного типа. Найдена карта типа: карта

Это позволяет создать таблицу с примитивными типами в столбце раздела, даже с BINARY, хотя не все символы разрешены в именах папок, а загрузка двоичного файла как есть приведет к сбою.

В конце концов, все можно сериализовать как строку с разрешенными символами. И если вы хотите, структуры можно хранить в виде строк и десериализовать обратно, хотя это непрактично, потому что вам нужно отсечение разделов для работы, а функции в фильтре разделов отключат эту функцию.

person leftjoin    schedule 25.04.2019