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



>将列 A 追加到现有的数组类型列 B

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

为了更准确地说,我应该说"set"而不是上面的"数组",因为我预计没有重复项。但这里的重复并不是什么大问题。

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

你可以

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

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

我认为最好的选择是使用Klout的砖屋JAR,其中包含ArrayUnionUDF,它返回一个数组,不仅适用于字符串数组,还将取消重复项。github页面在这里,而UDF本身的代码在这里

使用示例:

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

最新更新