hive - 在 Hive 中将字符串转换为 array<int>

标签 hive

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

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

谢谢

最佳答案

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 的数组。

关于hive - 在 Hive 中将字符串转换为 array<int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785271/

相关文章:

hive - 如何使用 Hive 创建具有单个 hdfs 路径的 n 个外部表

hadoop - 启动 hive 和 spark 时未发现合适的驱动程序错误

azure - 从 Azure HDInsights 中的分区 parquet 文件创建 Hive 外部表

mysql - hive 中的分区

amazon-ec2 - 将新卷添加到伪分布式 Hadoop 节点无提示失败

hadoop - 从 GZIP 读取的 Hive 表包含元信息,例如第一行中的文件名

python - 我可以在分区的配置单元表上使用 mrjob python 库吗?

sql - 需要对一列进行分组添加以获取Hive中另一列的计数

hadoop - 如何在不移动数据的情况下从具有不同分区的另一个配置单元表创建配置单元表?

hadoop - 重写 SemanticException [错误 10001]