приведите столбец строки к дате для определенного формата - PullRequest
0 голосов
/ 14 января 2020

Как привести столбец строки к столбцу даты и сохранить тот же формат во фрейме данных spark?

Я хочу привести столбец строки к дате, указав формат, но всегда указывается дата после преобразования формат по умолчанию: гггг-мм-дд.

Но мне нужен тип Date с форматом в строковом значении (я хочу, чтобы тип данных был только Date, а не String)

Например:

 val spark = SparkSession.builder().master("local").appName("appName").getOrCreate()
 import spark.implicits._
 //here the format is MMddyyyy(For Col2 which is of String type here)
 val df = List(("1","01132019"),("2","01142019")).toDF("Col1","Col2")

 import org.apache.spark.sql.functions._

 //Here i need the Col3 in Date type and with the format MMddyyyy But it is converting into yyyy-MM-dd
  val df1 = df.withColumn("Col3",to_date($"Col2","MMddyyyy"))

 //I tried this but this will give me Col3 in String data type which i need in Date
  val df1 = df.withColumn("Col3",date_format(to_date($"Col2","MMddyyyy"),"MMddyyyy"))

1 Ответ

0 голосов
/ 14 января 2020

Это невозможно, Spark принимает только формат даты yyyy-MM-dd.

Если вам нужно MMddyyyy это поле даты формата, сохраните его как String * * * * * * * * * * * * * * * * Тип: * * * * * * * * * * * * * * * * * * * * * * * * * *}}}

1013 * Пример: *1011* *1012* Пример:

df.withColumn("Col3",$"col2".cast("date")) //casting col2 as date datatype Results null
  .withColumn("col4",to_date($"col2","MMddyyyy").cast("date")) //changing format and casting as date type
  .show(false)

* * * * * * * * * * * * * * * * * * * * *1017* Результат: *1019*

+----+--------+----+----------+
|Col1|    Col2|Col3|      col4|
+----+--------+----+----------+
|   1|01132019|null|2019-01-13|
|   2|01142019|null|2019-01-14|
+----+--------+----+----------+

Schema:

df.withColumn("Col3",$"col2".cast("date"))
  .withColumn("col4",to_date($"col2","MMddyyyy").cast("date"))
  .printSchema

Результат:

root
 |-- Col1: string (nullable = true)
 |-- Col2: string (nullable = true)
 |-- Col3: date (nullable = true)
 |-- col4: date (nullable = true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...