Какой тип указать для java.time.Instant при получении StructType из класса case? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть кейс класса

case class A(tm: java.time.Instant)

При попытке получить StructType этого класса с помощью

ScalaReflection.schemaFor[A].dataType.asInstanceOf[StructType]

Я получаю сообщение об ошибке ниже

[error] Exception in thread "main" java.lang.ExceptionInInitializerError
[error]     at sample.spark.streaming.StructuredStreaming.main(StructuredStreaming.scala)
[error] Caused by: java.lang.UnsupportedOperationException: Schema for type java.time.Instant is not supported

Может кто-нибудь сказать, пожалуйста, как мне решить эту проблему? Я много искал, но не мог найти ничего, чтобы решить эту проблему. И нет, я не могу изменить тип java.time.Instant в классе дела.

1 Ответ

0 голосов
/ 09 сентября 2018

tl; dr Вы просто не можете использовать java.time.* классы как часть схемы (в структурированных запросах / наборах данных).

Однако вы можете загрузить набор данных в виде полей DataFrame и map java.time.Instant для поддерживаемого типа (т. Е. Для которого доступно Encoder).

См. org.apache.spark.sql.SQLImplicits для получения списка доступных кодеров.


И нет, я не могу изменить тип java.time.Instant в классе case.

Ну, тогда вам нужно создать свой собственный класс дел для использования в Spark.

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