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中所有列的不同值的数量[重复]