2016-12-03 3 views
1

Я использую Spark в последнее время и столкнулся с проблемой при попытке сохранить Spark DataFrame.Сохранение Spark DataFrame как CSV дает InvalidClassException

Если я использую функцию .save overthing работает отлично:

df.write.save("SparkTest_output") 

Но если я пытаюсь с помощью .csv или .json (или любого другого типа расширения). Пример:

df.write.csv("SparkTest_output") 

Я получаю InvalidClassException:

java.io.InvalidClassException: org.apache.commons.lang3.time.FastDateFormat; local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = 2 
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:621) 
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1623) 
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)...etc 

После прочтения всего я узнал, что это исключение может происходить с ошибками версии, но я не знаю, как это может быть случай, когда я m запускает только один файл на Spark 2.0.2.1. Кто-нибудь еще сталкивается с этим, или у кого-нибудь есть рекомендации? Благодаря

Here are the DataFrame write member functions from the docs

ответ

0

При запуске возможно, что --packages не был определен?

spark-1.5.1-bin-hadoop2.6/bin/spark-shell --packages com.databricks:spark-csv_2.11:1.2.0 the_script_to_run.py 

Приведенный выше пример предназначен для предыдущих данных databricks dist., Используйте любой правильный путь, версии. Помогает ли это?

+0

Я не указать пакет, потому что с поддержкой Спарк 2.0+ для файлов CSV приходит построен (без необходимых внешних пакетов) – ralston

+0

Хорошая точка в этом конкретном случае. –

0

Я закончил с использованием (дословно), что это ниже, и получили желаемые результаты:

df.write.csv(path='path/to/somewhere/in/hdfs', mode='overwrite', sep=',', header=False) 

Примечание: Если ваш код (в моем случае, SQL-подобных запросов) не дает никаких результатов, то DataFrameWriter не будет ничего. Итак, оглядываясь назад, я думал, что DataFrameWriter не работает, когда во всей действительности мой запрос просто извлекал 0 строк.

Документация для тех, кто натыкается на это: Spark 2.0.0 DataFrameWriter

Смежные вопросы