Johannes Herr created PIG-5475:
----------------------------------

             Summary: Jar-Compatibility Problem with Hadoop 3.4.2
                 Key: PIG-5475
                 URL: https://issues.apache.org/jira/browse/PIG-5475
             Project: Pig
          Issue Type: Bug
    Affects Versions: 0.18.0
            Reporter: Johannes Herr


In https://issues.apache.org/jira/browse/PIG-5374 a dependency on the 
Apache-Commons-3 class 
"org.apache.commons.collections.buffer.CircularFifoBuffer" was introduced for 
Pig 0.18. At the time Apache-Commons-3 was part of the classpath of Hadoop.

With https://issues.apache.org/jira/browse/HADOOP-15760 Hadoop has switched to 
version 4 of Apache-Commons, which no longer contains the above-mentioned class.

We therefore now get a NoClassDefFoundError for some (not all) of our Pig-jobs.

This is the corresponding stacktrace:
{noformat}
13.11.2025 11:13:47 ERROR o.a.h.m.YarnChild [main] - Error running child : 
java.lang.NoClassDefFoundError: 
org/apache/commons/collections/buffer/CircularFifoBuffer
        at 
org.apache.pig.impl.io.InterRecordReader.skipUntilMarkerOrSplitEndOrEOF(InterRecordReader.java:95)
        at 
org.apache.pig.impl.io.InterRecordReader.nextKeyValue(InterRecordReader.java:179)
        at org.apache.pig.impl.io.InterStorage.getNext(InterStorage.java:79)
        at 
org.apache.pig.impl.builtin.RandomSampleLoader.getNext(RandomSampleLoader.java:74)
        at 
org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.LoadFuncDecorator.getNext(LoadFuncDecorator.java:74)
        at 
org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigRecordReader.nextKeyValue(PigRecordReader.java:209)
        at 
org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:569)
        at 
org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:80)
        at 
org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:91)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:800)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:348)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178)
        at 
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
        at java.base/javax.security.auth.Subject.doAs(Subject.java:439)
        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172)
Caused by: java.lang.ClassNotFoundException: 
org.apache.commons.collections.buffer.CircularFifoBuffer
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
        ... 17 more
{noformat}
This are the corresponding classpath entries for 'common-collections':
{noformat}
[...]hadoop/share/hadoop/common/lib/commons-collections4-4.4.jar
[...]hadoop/share/hadoop/hdfs/lib/commons-collections4-4.4.jar
{noformat}
(Which explains the problem, since the class is only in version 3 of 
commons-collections and no longer in version 4.)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to