искровая запись: источник данных CSV не поддерживает нулевой тип данных - PullRequest
0 голосов
/ 14 сентября 2018

У меня ошибка в моем коде.Код сбрасывает некоторые данные в базу данных Redshift.

После некоторых исследований я нашел простой способ воспроизвести их в спарк-консоли.

Работает нормально:

scala> Seq("France", "Germany").toDF.agg(avg(lit(null))).write.csv("1.csv")
scala>

Но если я заменим avg на max Я получу ошибку "Источник данных CSV не поддерживает нулевой тип данных."

scala> Seq("France", "Germany").toDF.agg(max(lit(null))).write.csv("2.csv")
java.lang.UnsupportedOperationException: CSV data source does not support null data type.

Что не так с max ?

1 Ответ

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

Ошибка верна, так как AVG возвращает тип данных DOUBLE

Seq("France", "Germany").toDF.agg(avg(lit(null)).alias("col1")).printSchema

enter image description here

, где MAX возвращает тип как ноль

Seq("France", "Germany").toDF.agg(max(lit(null)).alias("col1")).printSchema

enter image description here

поэтому, когда вы пишете фрейм данных, в котором MAX выдает ошибку, если вы хотите сохранить фрейм данных с max, явно преобразуйте его в другой тип

Seq("France", "Germany").toDF.agg(max(lit(null)).alias("col1").cast(DoubleType)).write.csv("path")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...