【问题标题】:Performing numerical operations on array values column in Hive对 Hive 中的数组值列执行数值运算
【发布时间】:2021-01-12 04:44:55
【问题描述】:

对 hive 表执行数值运算

id array value
a [10:20] 2
b [30:40:50] 5

我想把上面的表格转换成下面的

id array value converted_array
a [10:20] 2 [20:40]
b [30:40:50] 5 [150:200:250]

我想将 'array' 列与 'value' 列相乘,并使用 hql 创建一个新列 'converted_array'。我知道如何在 python 中做到这一点,但我想知道是否有办法在 hive 中做到这一点。

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    尝试在分解视图上使用collect_set,如下所示,这会将value列中的常量整数值与数组中的每个元素相乘(使用explode),然后返回结果(使用collect_set):

    select id, collect_set(pve) as pv, value1, collect_set(pve*value1) as converted_array
    from stacko1
    lateral view explode(price_lov) t as pve
    group by id,value1;
    

    这应该会给你想要的输出。

    【讨论】:

    • 我在使用explode函数org.apache.hive.service.cli.HiveSQLException时遇到以下错误:编译语句时出错:FAILED:UDFArgumentException explode()将数组或映射作为参数
    • 在你的问题中你提到列是一个数组,但错误说它不是一个数组,你能检查你在explode中使用的列的数据类型和列中的数据类型并在此处发布以供参考?
    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 2019-01-07
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2013-05-12
    相关资源
    最近更新 更多