Spark - извлечение строки даты из DateType - PullRequest
0 голосов
/ 23 октября 2018

У меня есть объект Row, который содержит один из столбцов типа DateType.

Я извлекаю значения отдельных полей из этого объекта Row следующим образом:

val eventDate = row.getAs[DateType](0)
val recordCount = row.getAs[Long](1)

Я хочу извлечьстроковое представление значения даты из eventDate.Как я могу это сделать?Intellij предлагает метод для eventDate с именем formatted, который я использовал следующим образом:

val eventDateString = row.getAs[DateType](0).formatted("yyyy-MM-dd")

Однако после выполнения значение в eventDateString равно «гггг-мм-дд», а не фактическое значение даты.Как я могу получить фактическое значение даты в строковом представлении.

Кроме того, я не могу найти отформатированный (format: String) метод в документации Spark2 по ссылке ниже.Мне интересно, почему Intellij показывает этот метод, когда документация не показывает этот метод.Пожалуйста, помогите.

https://spark.apache.org/docs/2.2.1/api/java/org/apache/spark/sql/types/DateType.html

1 Ответ

0 голосов
/ 23 октября 2018

Код:

val schema = StructType(List(new StructField("event_date", DateType)))
val data = Seq(Row(Date.valueOf("2018-10-21")), Row(Date.valueOf("2018-10-22")))
val df = spark.createDataFrame(spark.sparkContext.parallelize(data), schema)
df.printSchema()
df.show()

//here it will cast date type to string type
df.foreach { row =>
  println(row.getAs[String]("event_date"))
}

Пример вывода:

root
 |-- event_date: date (nullable = true)

+----------+
|event_date|
+----------+
|2018-10-21|
|2018-10-22|
+----------+

2018-10-21
2018-10-22

Примечание: протестировано с Spark 2.2.0 и Scala 2.11.8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...