启动 spark-submit 时出错,因为 avro
Error while I launch spark-submit because avro
我正在用 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)
你能帮帮我吗?
谢谢
好的,
我喜欢这个解决方案:D
感谢 http://apache-spark-developers-list.1001551.n3.nabble.com/Fwd-Unable-to-Read-Write-Avro-RDD-on-cluster-td10893.html.
解决方法是在你的 SPARK_CLASSPATH
中添加 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/
但这不是 spark-submit --master yarn-cluster 的解决方案
我又遇到了同样的错误:
WARN scheduler.TaskSetManager:在阶段 0.0 中丢失任务 9.1(TID 15、10.163.34.129):java.lang.IncompatibleClassChangeError:找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但需要 class
在 org.apache.avro.mapreduce.AvroKeyInputFormat.createRecordReader(AvroKeyInputFormat.java:47)
有人有其他想法吗?
我正在用 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)
你能帮帮我吗?
谢谢
好的, 我喜欢这个解决方案:D 感谢 http://apache-spark-developers-list.1001551.n3.nabble.com/Fwd-Unable-to-Read-Write-Avro-RDD-on-cluster-td10893.html.
解决方法是在你的 SPARK_CLASSPATH
中添加 jarexport 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/
但这不是 spark-submit --master yarn-cluster 的解决方案
我又遇到了同样的错误:
WARN scheduler.TaskSetManager:在阶段 0.0 中丢失任务 9.1(TID 15、10.163.34.129):java.lang.IncompatibleClassChangeError:找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但需要 class 在 org.apache.avro.mapreduce.AvroKeyInputFormat.createRecordReader(AvroKeyInputFormat.java:47)
有人有其他想法吗?