【问题标题】:Remove Nulls in specific Rows in Dataframe and combine rows删除 Dataframe 中特定行中的 Null 并合并行
【发布时间】:2018-02-13 07:36:20
【问题描述】:

需要使用 Scala 在 Spark Dataframes 中执行以下活动。 尝试做一些基本的过滤器 isNotNull 条件和其他。但没有运气。

输入

+----------+----------+----------+
|     Amber|     Green|       Red|
+----------+----------+----------+
|      null|      null|[AE,AA,CV]|
|      null|[AH,EE,CC]|      null|
|[DD,DE,QQ]|      null|      null|
+----------+----------+----------+

输出

+----------+----------+----------+
|     Amber|     Green|       Red|
+----------+----------+----------+
|[DD,DE,QQ]|[AH,EE,CC]|[AE,AA,CV]|
+----------+----------+----------+

【问题讨论】:

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


    【解决方案1】:

    如果输入dataframe仅限于

    +----------+----------+----------+
    |     Amber|     Green|       Red|
    +----------+----------+----------+
    |      null|      null|[AE,AA,CV]|
    |      null|[AH,EE,CC]|      null|
    |[DD,DE,QQ]|      null|      null|
    +----------+----------+----------+
    

    然后执行以下操作应该可以获得所需的最终 dataframe

    import org.apache.spark.sql.functions._
    df.select(collect_list("Amber")(0).as("Amber"), collect_list("Green")(0).as("Green"), collect_list("Red")(0).as("Red")).show(false)
    

    你应该得到

    +------------+------------+------------+
    |Amber       |Green       |Red         |
    +------------+------------+------------+
    |[DD, DE, QQ]|[AH, EE, CC]|[AE, AA, CV]|
    +------------+------------+------------+
    

    collect_list 内置函数会忽略 null 值。

    【讨论】:

      猜你喜欢
      • 2022-11-04
      • 2019-02-25
      • 2012-11-25
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      相关资源
      最近更新 更多