我正在将我的猪脚本原型化为蜂巢。我需要在从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导入表时添加列到现有表以添加列?
答案 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_statusINSERT OVERWRITE TABLE user_data_status SELECT *, 'active' AS STATUS FROM user_data;
虽然可以选择将列添加到现有表中,但只会更新Metastore中的元数据,并且值将默认为NULL。
如果我是你,我宁愿重新加载完整的数据,而不是在改变列结构后使用UPDATE命令更新整个表。希望这有帮助!