在Scala中将数据帧写入CSV LD时,日期字段被转换为数字-1479740431158000
我尝试按照各种选项进行操作,但是没有任何选择
有什么方法可以将字段以正确格式写入CSV?我正在使用Spark 2.0
scala> tgt.write.format("com.databricks.spark.csv").option("header", "false").option("dateFormat", "MM/dd/yyyy HH:mm:ss").save("/data/mi30/apps.csv")
scala> tgt.write.format("com.databricks.spark.csv").option("header", "false").option("dateFormat", "mm/dd/yyyy HH:mm:ss").save("/data/mi30/apps.csv")
scala> tgt.write.format("com.databricks.spark.csv").option("header", "false").option("dateFormat", "yyyy-mm-dd hh:mm:ss").save("/data/mi30/apps.csv")
scala> tgt.write.format("com.databricks.spark.csv").option("header", "true").option("dateFormat", "yyyy-mm-dd hh:mm:ss").save("/data/mi30/apps.csv")
scala> tgt.write.format("com.databricks.spark.csv").option("header", "true").option("dateFormat", "yyyy-MM-dd HH:mm:ssX").save("/data/mi30/apps.csv")
scala> tgt.write.format("com.databricks.spark.csv").option("header", "true").option("dateFormat", "yyyy-MM-dd HH:mm:ssS").save("/data/mi30/apps.csv")
scala> tgt.write.format("com.databricks.spark.csv").option("header", "true").option("dateFormat", "yyyy-MM-dd HH:mm:ss:S").save("/data/mi30/apps.csv")
scala> tgt.printSchema
root
|-- empno: integer (nullable = true)
|-- ename: string (nullable = true)
|-- message_id: string (nullable = true)
|-- deptno: integer (nullable = true)
|-- md5value: string (nullable = true)
|-- batchid: string (nullable = true)
|-- currind: string (nullable = true)
|-- start_date: timestamp (nullable = true)
|-- end_date: timestamp (nullable = true)
|-- update_date: timestamp (nullable = true)
spark 2.0.0编写日期格式存在一些问题,但此问题已在Spark 2.0.1中固定。请检查https://github.com/databricks/spark-csv/issues/392。另外,您应该使用" CSV"而不是" com.databricks.spark.csv",因为它已包含在Apache-Spark的最新版本中。因此您可以使用
tgt.write.format("csv").option("header", "false").option("dateFormat", "yyyy-MM-dd").save("/data/mi30/apps.csv")