Neha Pawar
<http://localhost:9000/help#/Table/ingestFromFile>
This was working a few weeks ago. Now i get this exception during segment creation
java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/lib/input/FileInputFormat
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_282]
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_282]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_282]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[?:1.8.0_282]
at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_282]
at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_282]
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_282]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_282]
at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_282]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_282]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352) ~[?:1.8.0_282]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_282]
at org.apache.parquet.HadoopReadOptions$Builder.<init>(HadoopReadOptions.java:95) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.parquet.HadoopReadOptions.builder(HadoopReadOptions.java:79) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.parquet.hadoop.ParquetReader$Builder.<init>(ParquetReader.java:198) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.parquet.avro.AvroParquetReader$Builder.<init>(AvroParquetReader.java:107) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.parquet.avro.AvroParquetReader$Builder.<init>(AvroParquetReader.java:99) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.parquet.avro.AvroParquetReader.builder(AvroParquetReader.java:48) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.plugin.inputformat.parquet.ParquetUtils.getParquetAvroReader(ParquetUtils.java:51) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.plugin.inputformat.parquet.ParquetAvroRecordReader.init(ParquetAvroRecordReader.java:52) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader.init(ParquetRecordReader.java:47) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.spi.data.readers.RecordReaderFactory.getRecordReaderByClass(RecordReaderFactory.java:149) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.core.segment.creator.impl.SegmentIndexCreationDriverImpl.getRecordReader(SegmentIndexCreationDriverImpl.java:122) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.core.segment.creator.impl.SegmentIndexCreationDriverImpl.init(SegmentIndexCreationDriverImpl.java:98) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.controller.util.FileIngestionUtils.buildSegment(FileIngestionUtils.java:129) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.controller.util.FileIngestionHelper.buildSegmentAndPush(FileIngestionHelper.java:101) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.controller.api.resources.PinotIngestionRestletResource.ingestData(PinotIngestionRestletResource.java:197) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at org.apache.pinot.controller.api.resources.PinotIngestionRestletResource.ingestFromFile(PinotIngestionRestletResource.java:127) ~[pinot-all-0.7.0-SNAPSHOT-jar-with-dependencies.jar:0.7.0-SNAPSHOT-89a22f097c5ff26396e58950c90d764066a56121]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_282]
Xiang Fu
Neha Pawar
Amrish Lal
04/02/2021, 7:44 PMAmrish Lal
04/02/2021, 7:46 PMNeha Pawar
<http://localhost:9000/help#/Table/ingestFromFile>
with a parquet data fileNeha Pawar
curl -i -X POST -F file=@data.parquet "<http://localhost:9000/ingestFromFile?tableNameWithType=foo_OFFLINE&batchConfigMapStr=%7B%0A%20%20%22inputFormat%22%3A%22parquet%22%0A%7D>"
Amrish Lal
04/02/2021, 7:51 PMNeha Pawar
Neha Pawar
Amrish Lal
04/02/2021, 7:55 PMNeha Pawar
Amrish Lal
04/02/2021, 8:01 PMJack
04/02/2021, 8:34 PMNoClassDefFoundError
basically means that your code depends on and it is present at compile time but not found at runtime. @Amrish Lal can you try to find out whether it’s due to the incorrect scope of your newly added dependency?Amrish Lal
04/02/2021, 8:35 PMJack
04/02/2021, 8:39 PM<scope>compile</scope>
back to hadoop-common
and same for hadoop-mapreduce-client-core
in pinot-parquet.pom fileAmrish Lal
04/03/2021, 12:14 AM./pinot-tools/target/pinot-tools-pkg/bin/quick-start-batch.sh
. I had to add the following jars to classpath hadoop-auth-2.7.0.jar hadoop-mapreduce-client-core-2.7.0.jar hadoop-common-2.7.0.jar
to make it work. @Jack seems like this is an extra step besides fixing dependency in pom.xml.Neha Pawar
Amrish Lal
04/03/2021, 12:17 AMNeha Pawar
Neha Pawar
Neha Pawar
Amrish Lal
04/03/2021, 12:22 AMhadoop-mapreduce-client-core-2.7.0.jar
seems to have changed things.Amrish Lal
04/03/2021, 12:23 AMquick-start-batch.sh
, but will send a PR to fix the dependencies in pom.xml.Amrish Lal
04/03/2021, 1:03 AMNeha Pawar
Amrish Lal
04/03/2021, 4:33 AMpinot-tool/pom.xml
the jars should get copied into pinot-tools/target/pinot-tools-pkg/lib
which is in classpath for quick-start-batch.sh
. Not sure if thats the right/desired approach though.Neha Pawar