【问题标题】:how to write "DATE" data type in spark-csv如何在 spark-csv 中写入“日期”数据类型
【发布时间】:2017-03-14 08:39:38
【问题描述】:

我有类似的数据。

no,full_name,Ocupation,DOB
1,Eugene Perry,Physical Therapy Assistant,11/22/1972
2,Scott Evans,Account Executive,8/25/1961
3,Harold Porter,Community Outreach Specialist,4/5/1986
4,Roger Turner,Account Coordinator,12/24/1989
5,Patrick Freeman,Geological Engineer,2/11/1990
6,Jonathan Hart,Safety Technician I,7/24/1963
7,Susan Jenkins,Nurse,4/17/1967
8,Jason Graham,Internal Auditor,10/18/1966
9,Mark Wells,VP Marketing,2/20/1990

我的代码类似这样:(Java)

 SparkSession spark = SparkSession
                .builder()
                .appName("Java Spark SQL Example")
                .config("spark.some.config.option", "some-value")
                .config("spark.sql.warehouse.dir", "file:///C:/tmp/") 
                .getOrCreate();

       StructType Const = new StructType(new StructField[] {
            new StructField("no", DataTypes.IntegerType, true, Metadata.empty()),
            new StructField("full_name", DataTypes.StringType, true, Metadata.empty()),
            new StructField("Ocupation", DataTypes.StringType, true, Metadata.empty()),
            new StructField("DOB", DataTypes.DateType, true, Metadata.empty())
        });
                Dataset<Row> Tem  =  spark.read().format("com.databricks.spark.csv")
                        .schema(Const).option("header", "true").option("delimiter", ",").option("dateFormat", "MM/DD/YYYY")
                        .load("E:\\Datasets\\people.csv");

                Tem.show();
                Tem.printSchema();
                Tem.coalesce(1).write()
                    .format("com.databricks.spark.csv")
                    .option("header", "true").option("dateFormat", "MM/DD/YYYY")
                    .save("E:\\Datasets\\output");

上面的代码工作正常,没有错误,但是 DATE 数据类型(“DOB”)列没有正确打印在平面文件中。

我的实际结果是:

no,full_name,Ocupation,DOB
1,Eugene Perry,Physical Therapy Assistant,724
2,Scott Evans,Account Executive,-3287
3,Harold Porter,Community Outreach Specialist,5841
4,Roger Turner,Account Coordinator,6940
5,Patrick Freeman,Geological Engineer,7304
6,Jonathan Hart,Safety Technician I,-2559

即使我使用的是 .option("dateFormat", "MM/DD/YYYY")

请参阅最后一列,“日期”格式在 .csv 文件中不起作用。 我不确定我错过了什么。

【问题讨论】:

  • 试试.option("dateFormat", "MM/dd/YYYY")
  • 我试过了,它不起作用。你可以检查我的代码
  • 试过dd ?
  • dd 与 DD 不同。 @MRSrinivas 可能是对的。
  • 都试过了。结果是-ive

标签: apache-spark spark-dataframe spark-csv databricks


【解决方案1】:

此问题与 spark 版本 2.0.0 相关。

升级到 spark 2.0.1 并使用内置的 spark CSV 格式解决了这个问题。

参考link

【讨论】:

  • 即使我使用的是 Spark 2.4.5 也面临同样的问题
猜你喜欢
  • 2018-08-12
  • 2014-06-25
  • 1970-01-01
  • 2019-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2017-04-14
相关资源
最近更新 更多