【问题标题】:Writing to Spark Avro failing写入 Spark Avro 失败
【发布时间】:2016-09-28 22:14:40
【问题描述】:

我们有一个 MapR 集群,它正在运行,但现在它突然停止了,甚至在 mapr 演示集群上也不起作用。我们正在运行 MapR 5.1 和 Spark 1.6.1。

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()

但是现在我收到了这个错误:

java.lang.IllegalAccessError: tried to access class org.apache.avro.SchemaBuilder$FieldDefault from class    com.databricks.spark.avro.SchemaConverters$$anonfun$convertStructToAvro$1

有什么想法吗?这是按照databricks github上的说明进行的。我正在使用这些包调用 pyspark shell 或 spark-submit:

/opt/mapr/spark/spark-1.6.1/bin/pyspark --packages com.databricks:spark-avro_2.10:2.0.1 --driver-class-path /opt/mapr/spark/spark-1.6.1/lib/avro-1.7.7.jar --conf spark.executor.extraClassPath=/opt/mapr/spark/spark-1.6.1/lib/avro-1.7.7.jar --master yarn-client

【问题讨论】:

  • @zero323,您对此有意见吗?

标签: pyspark spark-dataframe mapr


【解决方案1】:

我过去曾遇到过此错误,但 pyspark 没有。我希望我的经验能有所帮助。

事实证明,有一个配置错误的 Java CLASSPATH 将 avro-1.7.5.jar 放在任何其他之前。您可以通过确保您的集群配置使用 avro-1.7.7.jar 来解决此问题。

您通常可以通过将spark.driver.userClassPathFirstspark.executor.userClassPathFirst 配置变量设置为true 来做到这一点。

特定错误是由 1.7.5 和 1.7.6 之间的 Avro 更改触发的(请参阅 https://github.com/apache/avro/blob/release-1.7.5/lang/java/avro/src/main/java/org/apache/avro/SchemaBuilder.java#L2136

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2014-01-03
    • 2018-08-02
    • 2015-10-31
    • 2017-03-26
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多