需要从 HIVE UDF 中的 3 列构建 3 个列表

Posted

技术标签:

【中文标题】需要从 HIVE UDF 中的 3 列构建 3 个列表【英文标题】:need to construct 3 lists from 3 columns in a HIVE UDF 【发布时间】:2014-12-27 14:45:37 【问题描述】:

我是蜂巢新手。我在编写 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


 

有人可以帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

如果我正确解释了您的意图,您可以使用 Hive 的内置函数 collect_list 来执行此操作。例如:

SELECT collect_list(field1) FROM my_table;

这将组装出现在my_tablefield1 列中的所有值的列表。

根据您需要对这些列表执行的操作,您可能会发现将 collect_list 的结果简单地传递到您的 UDF 会更容易(因为它们已经是列表)。

更多文档在这里:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

【讨论】:

以上是关于需要从 HIVE UDF 中的 3 列构建 3 个列表的主要内容,如果未能解决你的问题,请参考以下文章

Hive从入门到精通8:Hive自定义函数(UDF)

自定义UDF函数,从hive保存到mongodb

Hive UDF 全局变量

我的 Hive UDF 中的错误

从 hive 外部表中的分区中删除列

如何从具有动态分区的选择查询中插入 Hive 中的列?