Spark Dataframe - 计算列之间的对(Scala)

Posted

技术标签:

【中文标题】Spark Dataframe - 计算列之间的对(Scala)【英文标题】:Spark Dataframe - Computation of pairs between columns (Scala) 【发布时间】:2018-11-06 15:36:54 【问题描述】:

我有以下情况:我有一个带有“id”和“array”作为架构的数据框。现在我想为每个数组获取具有相应 id 的所有对列表并将其再次保存在数据框中。比如:

这是原始数据框:

+---+----------+
| id|candidates|
+---+----------+
|  1|    [2, 3]|
|  2|       [3]|
+---+----------+

这就是计算后的样子:

+---+---+
|id1|id2|
+---+---+
|  1|  2|
|  1|  3|
|  2|  3|
+---+---+

也许有人对这个问题有想法?

【问题讨论】:

只需使用explode函数 我如何将它用于所有数组元素? 【参考方案1】:

好的,谢谢@cheseaux 我找到了答案!有一个简单的explode_outer函数:

    candidatesDF.withColumn("candidates", explode_outer($"candidates")).show

【讨论】:

如果在数组为空/空时不想要任何行,请使用 explode。如果你使用explode_outer,它会在这种情况下产生null,这可能不是我们想要的。【参考方案2】:

只需explode数组列。

candidatesDF.withColumn("id2", explode('candidates))

【讨论】:

以上是关于Spark Dataframe - 计算列之间的对(Scala)的主要内容,如果未能解决你的问题,请参考以下文章

Spark dataframe 中某几列合并成vector或拆分

Spark dataframe 中某几列合并成vector或拆分

如何计算Apache Spark DataFrame中所有列的不同值的数量[重复]

Spark中的DataFrame,Dataset和RDD之间的区别

如何将列除以 Spark DataFrame 中的总和

计算Spark DataFrame中的非空值的数量