java.lang.illegalaccesserror从mapreduce中自己的函数创建avro对象时出错

e5nqia27  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(378)

我有一个hadoopmapreduce程序,它在map阶段的一个自建函数中,使用avro存储数据,然后再将数据发送到reduce阶段。运行函数时,出现以下错误:

Caused by: java.lang.IllegalAccessError: tried to access method org.apache.avro.specific.SpecificData.<init>()V from class com.example.myapp.avro.PointList

点列表数据类型无效 int s、 但它没有遇到麻烦 double s。你知道这是什么原因吗?

swvgeqrz

swvgeqrz1#

引用javadocs IllegalAccessError :
如果应用程序试图访问或修改字段,或调用其无权访问的方法,则引发。通常,这个错误被编译器捕获;只有在类的定义发生不兼容的更改时,才能在运行时发生此错误。
mapreduce作业很可能是针对avro的一个版本开发和编译的,然后在部署到hadoop集群之后,它开始在运行时使用另一个不兼容的avro版本。我建议查看运行时类路径,看看它是否获得了与您预期不同的avro版本。

相关问题