这是有关更新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/

10-12 23:02