2016-12-03 116 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