【问题标题】:Java Spark convert Empty values in Dataframe to nullJava Spark 将 Dataframe 中的 Empty 值转换为 null
【发布时间】:2022-01-08 17:57:05
【问题描述】:

我正在尝试将我的 spark Dataframe 中的所有空值转换为 null 使用:

df.withColumn(colname, when(df.col(colname).equalTo(""), null)
                                      .otherwise(df.col(colname)));

它正在工作,但我必须对所有列执行此操作,在 java-spark 中有没有其他方法可以检查数据框中的所有列并将其替换为 null

【问题讨论】:

    标签: apache-spark spark-java


    【解决方案1】:

    如果您想将该转换应用于所有列,您可以使用 df.columns() 列出所有列,并使用 for 循环或 stream 对所有列使用相同的构造,如下所示:

    List<Column> list = Arrays
        .stream(df.columns())
        .map(colname -> functions
                    .when(df.col(colname).equalTo(""), null)
                    .otherwise(df.col(colname)))
        .collect(Collectors.toList());
    
    df.select(list.toArray(new Column[0]));
    

    【讨论】:

      【解决方案2】:

      您可以在数据框列上使用 forEach 循环并使用 null 操作替换。

      Dataset<Row> ds = //Input dataframe;
      
      Stream.of(ds.columns()).forEach(c -> ds.withColumn(c, when(col(c).equalTo(""), null).otherwise(col(c))));
      

      【讨论】:

        猜你喜欢
        • 2017-03-25
        • 2018-08-26
        • 2017-05-09
        • 1970-01-01
        • 1970-01-01
        • 2017-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多