如何使用 Unix Bash 脚本或 awk 脚本作为使用 Transform 的 Hive UDF?
How to Use Unix Bash scripts or awk scripts as Hive UDF using Transform?
我正在尝试 运行 使用 "TRANSFORM" 的一个 Hive 查询,PFB 示例查询
例如:-
SELECT TRANSFORM (*)
USING 'worker.py' as (sum)
FROM mysource_filetable
在上面的示例中,Python 用于 UDF 以计算所有列的总和。
我不想使用 Python 或 Java 代码作为 UDF,我们可以使用 Bash 脚本对所有列求和吗?
当然,Hive 流式 UDF 功能可用于任何脚本类型。只需指定可执行文件和脚本(在添加资源之后)。所以对于这个例子,你的代码看起来像这样:
SELECT TRANSFORM (*)
USING 'sh worker.sh' as (sum)
FROM mysource_filetable
确保您遵循流式 UDF 的其他准则,例如您正在从 stdin 读取并通过 stdout 传递值。您可以在这里找到更多信息:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Transform
我正在尝试 运行 使用 "TRANSFORM" 的一个 Hive 查询,PFB 示例查询
例如:-
SELECT TRANSFORM (*)
USING 'worker.py' as (sum)
FROM mysource_filetable
在上面的示例中,Python 用于 UDF 以计算所有列的总和。
我不想使用 Python 或 Java 代码作为 UDF,我们可以使用 Bash 脚本对所有列求和吗?
当然,Hive 流式 UDF 功能可用于任何脚本类型。只需指定可执行文件和脚本(在添加资源之后)。所以对于这个例子,你的代码看起来像这样:
SELECT TRANSFORM (*)
USING 'sh worker.sh' as (sum)
FROM mysource_filetable
确保您遵循流式 UDF 的其他准则,例如您正在从 stdin 读取并通过 stdout 传递值。您可以在这里找到更多信息:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Transform