【问题标题】:Spark dataframe concat multiple columns into one with optional columns in some row using JavaSpark数据框使用Java将多列合并为一列,在某些行中具有可选列
【发布时间】:2021-09-21 12:08:31
【问题描述】:

我有一个 Spark 数据框。我想将多列合并为一列,有些行在 concat 中没有提到的某些列

id  mid colA colB
1   1    X     T
2   1    R
3   2          P

如果我使用

df.withColumn("colC", functions.concat("colA","colB")).drop("colA").drop("colB")

它只会返回

id  mid  colC
1   1     X
1   1     T
2   1     null
3   2     null

因为输入的第二行和第三行没有 colA 和 colB 的值

【问题讨论】:

  • 先将 Empty 字段替换为 "" 怎么样?
  • 您的输出与您使用的代码不匹配。您是否还使用了任何其他您可能错过在此处添加的操作?

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


【解决方案1】:
import org.apache.spark.sql.functions._

df.na.fill("", Seq("colA", "colB"))
 .withColumn("colC", concat(col("colA"), col("colB")))

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 2018-08-14
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2021-07-21
    • 2017-11-21
    • 2019-01-13
    • 2021-01-12
    相关资源
    最近更新 更多