我是新来的。我在编写HIVE UDF时遇到了麻烦,因为我将3个参数作为3列传递给UDF。我需要用列值构造3个列表。基于此,我将在3个列表上执行我的逻辑,并为每个记录返回一个字符串。
我的代码必须看起来像这样。
public String evaluate(int column1, int column2, String column3){
ArryList column1List //column1List has to all column1 values
ArryList column2List //column2List has to all column2 values
ArryList column3List //column3List has to all column3 values
}
有人可以帮我这个忙吗?
最佳答案
如果我正确解释了您的意图,则可以使用Hive的内置函数collect_list
做到这一点。例如:
SELECT collect_list(field1) FROM my_table;
这将组装
field1
的my_table
列中出现的所有值的列表。根据您对这些列表的需要,您可能会发现将
collect_list
的结果简单地传递到UDF会更容易(因为它们已经是列表了)。此处有更多文档:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
关于java - 需要从HIVE UDF的3列构造3个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27668322/