Я прочитал файл или 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)
Как я могу решить эту проблему.