gpt4 book ai didi

join - Spark : Join dataframe column with an array

转载 作者:行者123 更新时间:2023-12-02 11:52:52 25 4
gpt4 key购买 nike

我有两个带有两列的 DataFrame

  • df1 具有架构 (key1:Long, Value)

  • df2 具有架构 (key2:Array[Long], Value)

我需要在关键列上加入这些 DataFrame(查找 key1key2 中的值之间的匹配值)。但问题是他们的类型不一样。有没有办法做到这一点?

最佳答案

执行此操作的最佳方法(并且不需要任何数据帧转换或分解的方法)是使用 array_contains Spark sql 表达式,如下所示。

import org.apache.spark.sql.functions.expr
import spark.implicits._

val df1 = Seq((1L,"one.df1"), (2L,"two.df1"),(3L,"three.df1")).toDF("key1","Value")

val df2 = Seq((Array(1L,1L),"one.df2"), (Array(2L,2L),"two.df2"), (Array(3L,3L),"three.df2")).toDF("key2","Value")

val joinedRDD = df1.join(df2, expr("array_contains(key2, key1)")).show

+----+---------+------+---------+
|key1| Value| key2| Value|
+----+---------+------+---------+
| 1| one.df1|[1, 1]| one.df2|
| 2| two.df1|[2, 2]| two.df2|
| 3|three.df1|[3, 3]|three.df2|
+----+---------+------+---------+

请注意,您不能直接使用 org.apache.spark.sql.functions.array_contains 函数,因为它要求第二个参数是文字而不是列表达式。

关于join - Spark : Join dataframe column with an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com