java-AWS EMR上的avro错误
作者:互联网
我正在使用使用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
标签:avro,amazon-emr,java,scala,hadoop 来源: https://codeday.me/bug/20191013/1908047.html