将固定值列添加到Hive中的表

时间:2015-10-27 15:57:58

标签: hadoop hive apache-pig hiveql

我正在将我的猪脚本原型化为蜂巢。我需要在从Oracle数据库导入的表中添加一个状态列。

我的猪脚本看起来像这样:

user_data = LOAD 'USER_DATA' USING PigStorage(',') AS (USER_ID:int,MANAGER_ID:int,USER_NAME:int);

user_data_status = FOREACH user_data GENERATE
USER_ID,
MANAGER_ID,
USER_NAME,
'active' AS STATUS;

我在这里添加了“活动”状态列。 user_data表的值。 如何在通过Hive QL导入表时添加列到现有表以添加列?

1 个答案:

答案 0 :(得分:2)

据我所知,你必须像在Pig中那样重新加载数据。 例如,如果您已经拥有包含USER_ID:int,MANAGER_ID:int,USER_NAME:int列的表user_data,并且您正在寻找USER_ID:int,MANAGER_ID:int,USER_NAME:int, STATUS:active

您可以使用类似

之类的内容重新加载表user_data_status
INSERT OVERWRITE TABLE user_data_status SELECT *, 'active' AS STATUS FROM user_data;

虽然可以选择将列添加到现有表中,但只会更新Metastore中的元数据,并且值将默认为NULL。

如果我是你,我宁愿重新加载完整的数据,而不是在改变列结构后使用UPDATE命令更新整个表。希望这有帮助!