Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MapReduce中自己的函数创建Avro对象时出现java.lang.IllegalAccessError_Java_Hadoop_Mapreduce_Avro - Fatal编程技术网

从MapReduce中自己的函数创建Avro对象时出现java.lang.IllegalAccessError

从MapReduce中自己的函数创建Avro对象时出现java.lang.IllegalAccessError,java,hadoop,mapreduce,avro,Java,Hadoop,Mapreduce,Avro,我有一个Hadoop MapReduce程序,它在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 原因:

我有一个Hadoop MapReduce程序,它在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
原因:java.lang.IllegalAccessError:试图从com.example.myapp.avro.PointList类访问方法org.apache.avro.specific.SpecificData。()V
点列表数据类型有
int
s,但它没有遇到
double
s的问题。你知道这是什么原因吗?

引用JavaDocs:

当应用程序试图访问或修改字段,或调用其无权访问的方法时引发。 通常,编译器会捕获此错误;只有在类的定义发生不兼容的更改时,才会在运行时发生此错误

MapReduce作业很可能是针对一个版本的Avro开发和编译的,然后在部署到Hadoop集群后,它开始在运行时使用另一个不兼容的Avro版本。我建议查看运行时类路径,看看它是否使用了与预期不同的Avro版本