我们有一个MapR集群,它正在运行但现在突然停止,甚至无法在mapr演示集群上运行。我们正在运行MapR 5.1和Spark 1.6.1。
MyClass<444444444, uint32_t>
但现在我收到了这个错误:
from pyspark import SparkConf, SparkContext
from pyspark import HiveContext
from pyspark.sql import DataFrameWriter
conf = SparkConf().setAppName('test')
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)
df = sqlContext.createDataFrame([(2012, 8, "Batman", 9.8), (2012, 8, "Hero", 8.7), (2012, 7, "Robot", 5.5), (2011, 7, "Git", 2.0)],["year", "month", "title", "rating"])
df.show()
df.write.mode("append").format("com.databricks.spark.avro").save("/user/bedrock/output_avro")
sc.stop()
有什么想法吗?这是根据databricks github上的说明。我正在使用这些包调用pyspark shell或spark-submit:
java.lang.IllegalAccessError: tried to access class org.apache.avro.SchemaBuilder$FieldDefault from class com.databricks.spark.avro.SchemaConverters$$anonfun$convertStructToAvro$1
答案 0 :(得分:0)
过去我遇到过这个错误,但pyspark却没有。我希望我的经验可以提供帮助。
事实证明,有一个配置错误的Java CLASSPATH将avro-1.7.5.jar
置于其他任何人之前。您可以通过确保群集配置使用avro-1.7.7.jar
来解决此问题。
您通常可以将spark.driver.userClassPathFirst
和spark.executor.userClassPathFirst
配置变量设置为true
来完成此操作。
特定错误是由Avro在1.7.5和1.7.6之间的变化触发的(见https://github.com/apache/avro/blob/release-1.7.5/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java#L2136)