【问题标题】:org.apache.avro.SchemaParseException: Undefined nameorg.apache.avro.SchemaParseException:未定义的名称
【发布时间】:2019-01-03 19:35:38
【问题描述】:
我的 spark 工作是读取 kafka 并解码消息。我的 spark 作业在 MAC 上的本地 spark 集群 (https://archive.apache.org/dist/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz) 上运行良好。但是在 k8s 和 openstack 上针对 spark(2.2.1-hadoop-2.7,来自https://hub.docker.com/r/gettyimages/spark/tags)集群运行作业时,出现以下错误:
Caused by: org.apache.avro.SchemaParseException: Undefined name: "my_items"
at org.apache.avro.Schema.parse(Schema.java:1052)
at org.apache.avro.Schema.parse(Schema.java:1164)
at org.apache.avro.Schema.parse(Schema.java:1094)
at org.apache.avro.Schema$Parser.parse(Schema.java:927)
at org.apache.avro.Schema$Parser.parse(Schema.java:917)
我很确定,在两种情况下,spark 作业都试图解析相同的模式。为什么我的 k8s spark 集群上的 spark 作业失败了?我真的很困惑,现在不知道如何调试。欢迎任何提示。谢谢
【问题讨论】:
标签:
scala
apache-spark
kubernetes
avro
openstack-nova
【解决方案1】:
Avro 可能存在不同的依赖关系。 1.7.4 与 1.7.7.
容器图像:
$ find / | grep avro
/usr/spark-2.2.1/examples/src/main/python/avro_inputformat.py
/usr/spark-2.2.1/examples/src/main/resources/users.avro
/usr/spark-2.2.1/jars/avro-mapred-1.7.7-hadoop2.jar
/usr/hadoop-2.7.3/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib/avro-1.7.4.jar
/usr/hadoop-2.7.3/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/avro-1.7.4.jar
/usr/hadoop-2.7.3/share/hadoop/common/lib/avro-1.7.4.jar
/usr/hadoop-2.7.3/share/hadoop/tools/lib/avro-1.7.4.jar
/usr/hadoop-2.7.3/share/hadoop/mapreduce/lib/avro-1.7.4.jar
spark-2.2.1-bin-hadoop2.7.tgz 文件:
$ find . | grep avro
./spark-2.2.1-bin-hadoop2.7/examples/src/main/python/avro_inputformat.py
./spark-2.2.1-bin-hadoop2.7/examples/src/main/resources/users.avro
./spark-2.2.1-bin-hadoop2.7/jars/avro-mapred-1.7.7-hadoop2.jar
./spark-2.2.1-bin-hadoop2.7/jars/avro-1.7.7.jar
./spark-2.2.1-bin-hadoop2.7/jars/avro-ipc-1.7.7.jar
# Hadoop Avro?