scala - 如何将列作为要加入的键的集合加入数据集?

标签 scala apache-spark apache-spark-sql left-join

我想弄清楚如何连接两个数据帧,其中一个数据帧包含一个列表,该列表具有连接键。

例如:

  • 一个数据框的格式为(id: String, ..., ...)
  • 另一个有 (... ,..., List[tmpObj])
  • tmpObj 的结构如下 (id: String, value: int)

我的目标是通过在第二个数据帧的 tmpObj 列表中找到的 id 值将两个数据帧连接到第一个数据帧的 id。

有人知道如何解决这个问题吗?

最佳答案

使用explodejoin id 上的第一个数据帧:

df2.withColumn("obj", explode($"list_obj")).
  join(df1, $"obj.id" === $"id", "right")

关于scala - 如何将列作为要加入的键的集合加入数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49264767/

相关文章:

scala - 结构类型的实际用途?

hadoop - 多数据框的最佳方法是什么?

python - 基于 Spark Dataframe 中不同值的类别列

scala - 使用通用案例类了解删除

scala - 如何在 Dispatch for Scala 中使用 DELETE 请求?

没有同步就不能共享 Scala 不可变集合吗?

python - 在pyspark中解析一行中的多个json

python - 提交pyspark作业时出现语法错误

apache-spark - 修改 ArrayType 中的所有元素

apache-spark - PySpark 用最频繁的项目替换不太频繁的项目