Можно ли изменить значение раздела куста по умолчанию? - PullRequest
1 голос
/ 20 марта 2020

Я использую AWS Glue metastore для Hive.

Когда у нас есть записи, которые попадают в AWS S3 с нулевыми данными для столбцов раздела, Hive по умолчанию дает им значение раздела:

_HIVE_DEFAULT_PARTITION_

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

Есть ли где-нибудь параметр, который мы можем использовать, чтобы дать ему целочисленное значение по умолчанию?

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Существует настройка hive.exec.default.partition.name, которую вы можете попробовать изменить на свой страх и риск. Из куста Свойства конфигурации :

hive.exe c .default.partition.name
Значение по умолчанию: <strong>_HIVE_DEFAULT_PARTITION_</strong>
Добавлено в: Hive 0.6.0
Имя раздела по умолчанию, если в качестве значения столбца динамического раздела c задана пустая / пустая строка или любые другие значения, которые нельзя экранировать. Это значение не должно содержать никаких специальных символов, используемых в URI HDFS (например, ':', '%', '/' et c). Пользователь должен знать, что значение раздела Dynami c не должно содержать это значение, чтобы избежать путаницы.

Если у вас уже есть раздел для NULL, его можно переименовать (переместить) в новое имя для сохранения существующих данных.

0 голосов
/ 20 марта 2020

Можно ли изменить столбец на строку, удалить HIVE_DEFAULT_PARTITION , а затем изменить столбец обратно на Int? Извините, я не работал на AWS Метасторке клея.

Через Улей:

alter table <tablename> set tblproperties('EXTERNAL'='True');
alter table <tablename> change id int string;
alter table <tablename> set tblproperties('EXTERNAL'='False');
alter table <tabename> drop partition(id='__HIVE_DEFAULT_PARTITION__');

alter table <tablename> set tblproperties('EXTERNAL'='True');
alter table <tablename> change id string int;
alter table <tablename> set tblproperties('EXTERNAL'='False');
...