我有两张table,即 table1
以及 table2
. table1
很大,但是 table2
它很小。另外,我还有一个自定义项函数,其接口定义如下:
--table1--
id
1
2
3
--table2--
category
a
b
c
d
e
f
g
UDF: foo(id: Int): List[String]
我打算先调用udf来获得相应的类别: foo(table1.id)
,这将返回一个wrappedarray,然后我要加入 category
在 table2
做更多的操作。预期结果如下所示:
--view--
id,category
1,a
1,c
1,d
2,b
2,c
3,e
3,f
3,g
我试着在Hive里找到一个最不合适的方法,但是运气不好,有人能帮我吗?谢谢!
1条答案
按热度按时间kkih6yb81#
我相信你想用
explode
函数或数据集的flatMap
接线员。explode
函数为给定数组或Map列中的每个元素创建新行。flatMap
运算符首先将函数应用于此数据集的所有元素,然后展平结果,从而返回一个新的数据集。执行自定义项后
foo(id: Int): List[String]
你会得到一个Dataset
带类型的列array
.有了这个,
join
应该很容易。