如何使用 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