这是有关更新Hive表中的新列的问题。由于我认为Hive不允许使用子查询来更新现有表的列,因此我想问一下实现以下更新操作的最佳方法是什么。
我有以下两个示例表:
表A:
KeyId ValId Val
W1 V1 10
W2 V2 20
表B:
KeyId ValId Val
W1 V1 10
W1 V1 30
W1 V3 40
W1 V4 50
W2 V2 0
W2 V2 50
W2 V2 70
W2 V4 80
我想在表A中创建另一列,假设avgVal在表A的每一行中采用KeyId和ValId,并在表B中采用相应的KeyId和ValId的Val平均值。因此,我的最终输出表应类似于:
更新了表A:
KeyId ValId Val avgVal
W1 V1 10 20
W2 V2 20 40
如果问题不清楚,请告诉我。
最佳答案
似乎您正在尝试从表B中获取表A中的聚合值。在那种情况下,您不能在表A中具有“val”列,因为在聚合之后,您希望在表A中获得哪个val?
假设这是真正的错误,并且从表a中删除了“val”列,则表a的插入语句应如下所示:
insert into table table_a select keyid,valid,avg(val) from table_b group by keyid,valid
关于hadoop - 在不使用子查询的情况下更新配置单元表的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43102571/