2016-11-01 7 views
-1

У меня есть данные, подобные этому.Как написать тип данных «DATE» в spark-csv

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").

см. Последний столбец, форматирование «DATE» не работает в CSV-файле. Я не уверен, что мне не хватает.

+0

Попробуйте '.option ("DateFormat", "ММ/ДД/ГГГГ")' – mrsrinivas

+0

я пытался, его не working.you может проверить в своем коде –

+0

Пробовал с 'dd'? – mrsrinivas

ответ

0

Эта проблема связана с искробезопасной версией 2.0.0.

Модернизация до искры 2.0.1 и использование встроенного искрового CSV-файла устраняет проблему.

ссылка link