在Hive中使用UDF将两个表连接起来

3

在编写用于Hive的自定义UDF之前,有一个基本问题。我想基于自定义UDF将两个表进行连接,该UDF从表a和表b中获取参数。我已经看过从被连接的其中一张表中获取参数的UDF示例。那么从两个表中获取参数是否同样有效呢?

1个回答

3
听起来你想要一个函数。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接