是否可以更改默认配置单元分区值?

f2uvfpb9  于 2021-05-31  发布在  Hadoop
关注(0)|答案(2)|浏览(337)

我正在用aws胶水metastore做Hive。
当aws s3中有记录的分区列数据为空时,hive默认为它们提供分区值:
配置单元\默认\分区
这会引起问题,因为我们的分区列是一个整数,但这是一个字符串值。
是否有一个设置,我们可以利用给它一个整数默认值?

piah890a

piah890a1#

有一个设置 hive.exec.default.partition.name 你可以自己尝试改变。从配置单元配置属性:
hive.exec.default.partition.name配置单元
默认值: _HIVE_DEFAULT_PARTITION_ 添加到:hive 0.6.0
动态分区列值为null/空字符串或任何其他无法转义的值时的默认分区名称。此值不能包含hdfs uri中使用的任何特殊字符(例如“:”、“%”、“/”等)。用户必须知道动态分区值不应该包含这个值,以避免混淆。
如果已经有空分区,可以将其重命名(移动)为新名称以保留现有数据。

l2osamch

l2osamch2#

能否将列更改为string,删除hive\u default\u分区,然后将列更改回int?对不起,我没有在商店工作。
通过Hive:

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');

相关问题