在 hive 中的 udf 上加入两个表

Posted

技术标签:

【中文标题】在 hive 中的 udf 上加入两个表【英文标题】:joining two tables on a udf in hive 【发布时间】:2013-08-04 02:36:17 【问题描述】:

在我编写要在 hive 中使用的 udf 之前的一个基本问题。我想加入两个基于自定义 UDF 的表,它从表 a 中获取一个参数,从表 b 中获取另一个参数。我已经看到了 UDF 的示例,它们从要连接的表之一中获取参数。从两个表中获取参数是否同样有效?

【问题讨论】:

【参考方案1】:

听起来你想要一个函数

function my_udf(val_A, val_B):
    trans_A = <do something to val_A>
    trans_B = <do something to val_B>
    return trans_A cmp trans_B

UDF 将返回一个布尔值,您可以在 ON 子句中使用它。

我不确定您是否可以直接在 Hive 中执行此操作,但您始终可以使用两个 UDF 将 val_A 转换为 trans_A 并将 val_B 转换为 trans_B,然后使用正常的 ON:

select *
from
    (select *, udf_A(some_column) as trans_A from A) as AA
    JOIN
    (select *, udf_B(some_column) as trans_B from B) as BB on AA.trans_A = BB.trans_B

【讨论】:

以上是关于在 hive 中的 udf 上加入两个表的主要内容,如果未能解决你的问题,请参考以下文章

我的 Hive UDF 中的错误

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

如何使用 Hive 上下文中的 Pyspark 调用用 Java 编写的 Hive UDF

Hive 上的非平等加入

在 Hive 中使用 UDF 连接两个大表 - 性能太慢

带有文件 Json 的 Hive 中的 UDF python