gpt4 book ai didi

java - 在 HIVE UDF 中返回 ArrayList

转载 作者:可可西里 更新时间:2023-11-01 15:09:59 32 4
gpt4 key购买 nike

我创建了一个 UDF 函数,它接受两个文本参数并返回 数组列表。但是当我在 Hive 中调用 UDF 函数时,它给了我一个错误。

这是我的 UDF 代码片段:

public class MyTestUDF extends UDF {
public ArrayList<String> evaluate(Text i, Text s) {

if(s == null) return null;

String id = i.toString();
String value = s.toString();

<parse string value to v1, v2, and v3, and apply logic>

ArrayList<String> result = new ArrayList<String>();
result.add(id);
result.add(v1);
result.add(v2);
result.add(v3);

return result;
}
}

下面是我在 Hive 中的运行方式:

hive> SELECT multi[0] AS id,
multi[1] AS value1,
multi[2] AS value2,
multi[3] AS value3
FROM (SELECT my_udf_function(id, data) AS multi FROM testDB) bar;

FAILED: SemanticException [Error 10033]: Line 1:7 [] not valid on
non-collection types '0': struct<elementdata:struct<>,size:int>

数据是一个巨大的字符串值,我解析并应用逻辑并返回三个值作为 ArrayList 的格式。

我引用了这个链接 Returning & Using Multiple Values from a HIVE UDF但它对我不起作用。

有人可以帮忙吗?

谢谢!

最佳答案

更改 ArrayList<String>ArrayList<Text> ,因为 Hive 需要可序列化类型,例如 FloatWritable , IntWritable , 或 Text .有关更多信息,我建议 Returning & Using Multiple Values from a HIVE UDF ,易于阅读并解释之后的操作。

关于java - 在 HIVE UDF 中返回 ArrayList<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45447263/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com