在hive中的udf上连接两个表

时间:2013-08-04 02:36:18

标签: join hive

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

1 个答案:

答案 0 :(得分: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