如何将一列附加到Hive中的现有数组列?

时间:2016-03-19 19:37:49

标签: hadoop hive hiveql

将columnA附加到现有的数组类型列B

select
string_column_A,
array_column_B,
append(array_column_B, string_column_A) as AB
from onetable;

为了更准确,我应该在上面说“set”而不是“array”,因为我希望没有重复。但这里的重复并不是什么大问题。

在Hive中制作这个的最佳方法是什么?我已经检查了hive文档,但找不到任何相关信息来执行此操作。

2 个答案:

答案 0 :(得分:2)

你可以尝试这个select concat("A",concat_ws("",array('B','C'))); 如果您想要分隔符,,请使用以下语句。

select concat_ws(",","A",concat_ws(",",array('B','C')));

答案 1 :(得分:0)

我认为最好的选择是使用包含ArrayUnionUDF的Klout的brickhouse JAR,它返回一个数组,不仅适用于字符串数组,也可以取消重复项。 github页面是here,而UDF本身的代码是here

用法示例:

CREATE TEMPORARY FUNCTION array_union AS 'brickhouse.udf.collect.ArrayUnionUDF';
SELECT array_union(array(string_column_A), array_column_B) AS combined_columns