在Hive中将String转换为数组<int>

时间:2017-12-13 04:00:46

标签: hive

我有一个用String表示的整数数组。例如, “[1,2,2,3]”

Hive表中的字段类型是数组整数,我想知道是否有任何可以将上述字符串转换为数组整数的Hive内置UDF。

谢谢

1 个答案:

答案 0 :(得分:-1)

tl; dr 我不知道会为您执行此操作的Hive UDF,并且单独投射可能很麻烦。


不,没有UDF。至于构建自己的解决方案:

将其投射到array [string]很容易-只需使用regexp_replace放下方括号,然后在,上拆分结果字符串即可。

问题是将任意大小的数组从array [string]转换为array [int]。您可以逐一地分别转换数组元素:

hive> select id, my_array from array_table limit 3;
OK
10023307    ["0.20296966","0.17753501","-0.03543373"]
100308007   ["0.16155224","0.1945944","0.09167781"]
100384207   ["0.025892768","0.023214806","-0.003712816"]

hive> select array(cast(my_array[0] as double), cast(my_array[1] as double), cast(my_array[2] as double)) from array_table limit 3;
OK
[0.20296966,0.17753501,-0.03543373]
[0.16155224,0.1945944,0.09167781]
[0.025892768,0.023214806,-0.003712816]

但是这种方法只能用,因为我知道我有长度为3的数组。