【问题标题】:Spark Dataframe - Computation of pairs between columns (Scala)Spark Dataframe - 计算列之间的对(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函数
  • 我如何将它用于所有数组元素?

标签: scala apache-spark apache-spark-sql


【解决方案1】:

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

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

【讨论】:

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

只需explode数组列。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2017-04-14
    • 2019-01-04
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多