使用spark替换join函数

5vf7fwbs  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(434)

我有以下Dataframe:

Dataframe1
+---------------+
|id_data        |
+---------------+
|[1,20,3]       |
|[5,40]         |
|[50,90]        |
|[30,70]        |
+---------------+

id数据类型: array<integer> ```
Dataframe2
+---------------+
|id_data2 |
+---------------+
|20 |
|90 |
|100 |
+---------------+

我想要以下输出:

+---------------+
|id_data2 |
+---------------+
|20 |
|90 |
+---------------+

我是用 `join` ```
Dataset <Row> result =  Dataframe2.as("data1").join( Dataframe1.as("data2"),expr("array_contains(data2.id_data,data1.id_data2)"));

我有大量的数据和它是非常沉重的性能方面。
没有任何可能做到这一点 join function 在java语言中使用spark?
我需要你的帮助。

wixjitnu

wixjitnu1#

你可以用 explode 功能。这是一个scala代码。

df1.withColumn("id_data1", explode($"id_data"))
  .join(df2, $"id_data1" === $"id_data2", "inner")
  .select("id_data1")
  .show

+--------+
|id_data1|
+--------+
|      20|
|      90|
+--------+

相关问题