启动spark submit时出错,因为avro

dwbf0jvd  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(387)

我正在spark中创建一个应用程序。我在hadoop2中使用hdfs中的avro文件。我使用maven,包括avro,如下所示:

<dependency>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-mapred</artifactId>
            <version>1.7.6</version>
            <classifier>hadoop2</classifier>
</dependency>

我做了一个单元测试,虽然我使用mvn测试,所有的工作。但是当我用Spark发射的时候,不!我有个错误:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 0.0 failed 1 times, most recent failure: Lost task 1.0 in stage 0.0 (TID 1, localhost): java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.mapreduce.TaskAttemptContext, but class was expected
    at org.apache.avro.mapreduce.AvroKeyInputFormat.createRecordReader(AvroKeyInputFormat.java:47)

你能帮助我吗?
谢谢您

k5ifujac

k5ifujac1#

好的,我喜欢这个解决方案:d感谢http://apache-spark-developers-list.1001551.n3.nabble.com/fwd-unable-to-read-write-avro-rdd-on-cluster-td10893.html.
解决方案是在spark\u类路径中添加jar

export SPARK_CLASSPATH=yourpath/avro-mapred-1.7.7-hadoop2.jar:yourpath/avro-1.7.7.jar

您可以在这里下载jar:http://repo1.maven.org/maven2/org/apache/avro/avro-mapred/1.7.7/

l0oc07j2

l0oc07j22#

但它不是一个解决方案与Spark提交-主Yarn集群
我又犯了同样的错误:
warn scheduler.tasksetmanager:在阶段0.0(tid 15,10.163.34.129)中丢失了任务9.1:java.lang.CompatibleClassChangeError:找到了接口org.apache.hadoop.mapreduce.taskattemptcontext,但org.apache.avro.mapreduce.avrokeyinputformat.createrecordreader(avrokeyinputformat)中需要类。java:47)
有人有别的主意吗?

相关问题