我正在使用使用avro进行传输的spark-redshift(https://github.com/databricks/spark-redshift).
从Redshift读取是可以的,而在写入时
Caused by: java.lang.NoSuchMethodError: org.apache.avro.generic.GenericData.createDatumWriter(Lorg/apache/avro/Schema;)Lorg/apache/avro/io/DatumWriter
尝试使用Amazon EMR 4.1.0(Spark 1.5.0)和4.0.0(Spark 1.4.1).
不会
import org.apache.avro.generic.GenericData.createDatumWriter
要么,只是
import org.apache.avro.generic.GenericData
我正在使用scala shell
尝试下载其他几个avro-mapred和avro jars,尝试设置
{"classification":"mapred-site","properties":{"mapreduce.job.user.classpath.first":"true"}},{"classification":"spark-env","properties":{"spark.executor.userClasspathFirst":"true","spark.driver.userClasspathFirst":"true"}}
并添加这些jar来激发classpath.可能需要以某种方式调整Hadoop(EMR).
这会给任何人敲响钟声吗?
解决方法:
火花红移维护者在这里.
使用较新版本的spark-avro库(spark-redshift依赖于此)时,其他EMR用户也遇到了类似的错误.简而言之,问题似乎在于EMR的旧版本Avro优先于spark-avro所需的新版本.在https://github.com/databricks/spark-avro/issues/91(一个似乎与此处报告的异常相匹配的问题)处,一个用户建议将Avro JAR嵌入其应用程序代码:https://github.com/databricks/spark-avro/issues/91#issuecomment-142543149
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。