带参数的 Hive Python UDF

Posted

技术标签:

【中文标题】带参数的 Hive Python UDF【英文标题】:Hive Python UDF with argument 【发布时间】:2020-05-28 10:13:50 【问题描述】:

我想让 hive Python UDF 除了来自列的数据外还采用常量参数。

如何做到这一点?

在下面的例子中,我希望下面的 hive 查询能够接受参数'10000',并且 my_udf 应该能够解析这个参数'10000'

# hive>
ADD FILE my_udf.py;
SELECT TRANSFORM(col1, col2, '10000') USING 'python my_udf.py' AS (udf_output) FROM my_table;

# my_udf.py
import sys
for line_str in sys.stdin:
    line = line_str.strip().split('\t')
    print(line[2])  # udf outputs the constant argument we inputted: 10000

【问题讨论】:

【参考方案1】:
# hive>
ADD FILE my_udf.py;
SELECT TRANSFORM(col1, col2, '10000') USING 'python my_udf.py' AS (udf_output) FROM my_table;

TRANSFORM(col1, col2, '10000') 毕竟是正确的。我在其他地方遇到了一些其他语法问题,这导致我认为这种语法不起作用。

【讨论】:

以上是关于带参数的 Hive Python UDF的主要内容,如果未能解决你的问题,请参考以下文章

调用 UDF 时出现“此函数不带参数”错误

带分隔符的数据上的配置单元 UDF

带参数的 getItem 是列名

带 3 个参数的 zip 函数

Hive UDF:Hive 没有向 UDF 发送正确的参数

使用 callUDF 创建链接 UDF 调用的方法