【问题标题】:Add a fixed value column to a table in Hive向 Hive 中的表添加固定值列
【发布时间】:2015-10-27 15:57:57
【问题描述】:

我正在将我的猪脚本原型设计为 hive。我需要在从 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;

在这里,我将具有“活动”值的 STATUS 列添加到 user_data 表中。 如何在通过 Hive QL 导入表时向现有表添加列以添加列??

【问题讨论】:

  • 您是否尝试在更改表以添加新的“状态”列之后将数据加载到 Hive 表中。
  • 我正在尝试在 CSV 上创建表格时添加“状态”列

标签: hadoop hive apache-pig hiveql


【解决方案1】:

据我所知,您必须像在 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 命令更新完整的表。希望这会有所帮助!

【讨论】:

  • 有道理..谢谢
  • 所以在运行 INSERT OVERWRITE TABLE user_data_status SELECT *, 'active' AS STATUS FROM user_data;我应该为 user_data_status 创建表结构。里面有状态栏吗?
  • 是的@Yuvi...您必须首先使用状态列创建表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
相关资源
最近更新 更多