Csv 加载tempView时,空字符串显示为null
我正在spark中运行一些测试。为此,我加载了一个csv文件来比较我的结果 我的标准具Csv 加载tempView时,空字符串显示为null,csv,apache-spark,testing,apache-spark-sql,Csv,Apache Spark,Testing,Apache Spark Sql,我正在spark中运行一些测试。为此,我加载了一个csv文件来比较我的结果 我的标准具 ;;NULL;2017-03-21 ;;NULL;2017-03-21 ;;NULL;2017-03-21 这就是我加载文件的方式 spark.read.schema(Table.schema) .format("com.databricks.spark.csv") .option("delimiter", ";") .option("nullValue", "NULL"
;;NULL;2017-03-21
;;NULL;2017-03-21
;;NULL;2017-03-21
这就是我加载文件的方式
spark.read.schema(Table.schema)
.format("com.databricks.spark.csv")
.option("delimiter", ";")
.option("nullValue", "NULL")
.load(pathTable)
.createTempView(param.TABLE)
这是我的模式
val fields = Seq(
StructField("balance", StringType, nullable = true),
StructField("status", StringType, nullable = true),
StructField("status_date", DateType, nullable = true),
StructField("time_key", StringType, nullable = true)
)
val schema = StructType(fields)
由于某些原因,余额
和状态
在应为空字符串时加载为NULL
+-------+------+-----------+----------+
|balance|status|status_date| time_key|
+-------+------+-----------+----------+
| null| null| null|2017-03-21|
| null| null| null|2017-03-21|
| null| null| null|2017-03-21|
+-------+------+-----------+----------+
为什么会这样?我怎么能让它显示为空字符串?我不知道为什么会这样,但是
.na.fill("", Seq("balance", "status"))
帮助替换空值。似乎有一个问题在2.4中解决了
SPARK-17916似乎是SPARK的正常行为。请参阅本文 要解决此问题,可以将字符串列中的空值替换为空字符串,如下所示:
df.withColumn("balance", coalesce(col("balance"), lit(""))
你使用哪种版本的spark?@astro我使用的是spark 2