在将数据写出 spark scala 之前,将所有 null 替换为空格



这就是我用""替换所有null的方式。

val dfMainOutputFinalWithoutNull = dfMainOutputFinal.withColumn("concatenated", regexp_replace(col("concatenated"), "null", "")).withColumnRenamed("concatenated", header)
dfMainOutputFinalWithoutNull.repartition(1).write.partitionBy("DataPartition","StatementTypeCode")
  .format("csv")
  .option("nullValue", "")
  .option("delimiter", "t")
  .option("quote", "u0000")
  .option("header", "true")
  .option("codec", "gzip")
  .save("s3://trfsmallfffile/FinancialLineItem/output")

但我的问题是这也替换了记录中的空值.例如

无论在哪里找到annullment我的 scipt 之后的记录,我都会得到ament.

如何仅当找到空列时才替换空。

请尝试以下操作

val dfMainOutputFinalWithoutNull = dfMainOutputFinal.withColumn("concatenated", regexp_replace(col("concatenated"), "|^|null", "")).withColumnRenamed("concatenated", header)

您可以使用 dfMainOutputFinal.na.fill("")

见 https://spark.apache.org/docs/2.2.0/api/java/org/apache/spark/sql/DataFrameNaFunctions.html

相关内容

  • 没有找到相关文章

最新更新