如何在 Hive 中调用用户定义的函数?

Posted

技术标签:

【中文标题】如何在 Hive 中调用用户定义的函数?【英文标题】:How to call a user defined function in Hive? 【发布时间】:2013-06-18 21:14:14 【问题描述】:

我想编写一个依赖于传递到脚本中的参数的配置单元查询。这些参数可能需要我从未知数量的列中进行选择。 我想要做的是让传递给脚本的参数之一是包含列名的字符串,由一些正则表达式分隔,可能是逗号。 我一直在努力尝试使用拆分 UDF 将简单字符串转换为数组,并在查询中使用结果数组。 基本上,给定 A="Foo,酒吧" 我想得到 B=[Foo, 酒吧] 然后可以执行查询,例如 SELECT B[0] from tablename; 澄清:我正在尝试拆分我传入的变量。

编辑: 我已经意识到理想情况下我不会这样做 - 有没有办法构造一个配置单元查询并将其传递?

编辑2: 使用 -e 标志。不是真正的最佳实践,但我看不出另一种方法来做到这一点。也许使用猪会是一个更好的选择。

【问题讨论】:

【参考方案1】:

为什么不直接传递要选择的列列表。例如这个脚本有一个变量 COLUMNS

INSERT OVERWRITE DIRECTORY 's3://dummy/dummy/'
select $COLUMNS from table;

使用 CLI 运行时,只需像这样传递您想要选择的列列表

$> hive -f <path to script> -d COLUMNS=col1,col2,col3

HTH, 迪诺

【讨论】:

这很有道理 - 看起来我有一些重构要做!谢谢。

以上是关于如何在 Hive 中调用用户定义的函数?的主要内容,如果未能解决你的问题,请参考以下文章

hive中如何调用python函数

如何在shader中使用自定义函数

Hive 如何实现自定义函数 UDF

Hive 如何实现自定义函数 UDF

查询hive中都有哪些自定义函数

如何在Hive&Impala中使用UDF