pyspark: OR C не поддерживает преобразование типов из строки типа файла (1) в массив типов чтения <struct>(1) - PullRequest
0 голосов
/ 04 марта 2020

Я прочитал файл или c, сохраненный локально с использованием pyspark == 3.0.0dev2. Схема исходного файла выглядит следующим образом:

root
 |-- dat: string (nullable = true)
 |-- order_id: string (nullable = true)
 |-- passenger_num: string (nullable = true)
 |-- is_agency: string (nullable = true)
 |-- coordinates: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- time_stamp: long (nullable = true)
 |    |    |-- lng: double (nullable = true)
 |    |    |-- lat: double (nullable = true)
 |    |    |-- speed: double (nullable = true)

Я взрываю столбец «координаты», используя

explodeDF = df.select(explode("coordinates").alias("cor"))
flattenDF = explodeDF.selectExpr("cor.time_stamp", "cor.lng", "cor.lat", "cor.speed")

После разрыва исходных данных я получаю новый flattenDF. Но когда я показываю, что используется flattenDF.show(), я получаю сообщение об ошибке следующим образом:

Py4JJavaError: An error occurred while calling o236.count.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 3 in stage 6.0 failed 1 times, most recent failure: Lost task 3.0 in stage 6.0 (TID 54, WIN-VQVQVO99M5A, executor driver): org.apache.orc.impl.SchemaEvolution$IllegalEvolutionException: ORC does not support type conversion from file type string (1) to reader type array<struct<time_stamp:bigint,lng:double,lat:double,speed:double>> (1)

Как я могу решить эту проблему.

1 Ответ

0 голосов
/ 07 марта 2020

Я попробовал некоторые решения: я читаю исходный файл или c файл с именем a, записываю его непосредственно в локальную файловую систему с именем a_new, а затем читаю a_new и запускаю код, прекрасно работая без ошибка. Итак, я предполагаю, что это проблема с версией.

Когда я изменил версию на версию 2.4.5, произошло что-то магическое c. Код не будет сообщать об ошибке.

Итак, когда вы получили ту же ошибку, что и я, вы можете проверить, если ваша версия спарк 3.0. и измените его на 2.4.5.

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