1
我想将int数组的元素连接到hive中的一个字符串。如何将int数组的元素连接到Hive中的字符串
函数“concat_ws”仅适用于字符串数组,因此我尝试将(my_int_array作为字符串)强制转换,但它不起作用。
有什么建议吗?
我想将int数组的元素连接到hive中的一个字符串。如何将int数组的元素连接到Hive中的字符串
函数“concat_ws”仅适用于字符串数组,因此我尝试将(my_int_array作为字符串)强制转换,但它不起作用。
有什么建议吗?
尝试使用变换/斌/猫:
from mytable select transform(my_int_array) using '/bin/cat' as (my_int_array);
第二个选项是改变并替换分隔符:
1) ALTER TABLE mytable CHANGE COLUMN my_int_array = my_int_array_string string;
2) SELECT REPLACE(my_int_array_string, '\002', ', ') FROM mytable;
看来,最简单的方法是写一个自定义的UDF执行此特定的任务:
public class ConcatIntArray extends UDF {
public String evaluate(ArrayList<Integer> in, final String delimiter){
return in.stream().map(u-> String.valueOf(u)).collect(Collectors.joining(delimiter));
}
}
第一个解决方案完美地工作!谢谢! +1 – Kamaney