Hadoop 为什么带有ORC的MapReduce进程需要配置单元类?

Hadoop 为什么带有ORC的MapReduce进程需要配置单元类?,hadoop,hive,mapreduce,orc,Hadoop,Hive,Mapreduce,Orc,我正在实现一个mapreduce进程,其中读取、处理和写入orc文件,问题是当我尝试使用map任务进行读取时,它会产生一个错误,询问org.apache.hadoop.hive.common.io.DiskRange类,当我导入hive-exec.3.1.1.jar时,它可以正常工作,但集群使用另一个配置单元版本及其旧的依赖项,这是一个错误的解决方案 java.lang.Exception: java.lang.NoClassDefFoundError: org/apache/hadoop/hi

我正在实现一个mapreduce进程,其中读取、处理和写入orc文件,问题是当我尝试使用map任务进行读取时,它会产生一个错误,询问org.apache.hadoop.hive.common.io.DiskRange类,当我导入hive-exec.3.1.1.jar时,它可以正常工作,但集群使用另一个配置单元版本及其旧的依赖项,这是一个错误的解决方案

java.lang.Exception: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/common/io/DiskRange
    at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/common/io/DiskRange
    at org.apache.orc.OrcFile.createReader(OrcFile.java:342)
    at org.apache.orc.mapreduce.OrcInputFormat.createRecordReader(OrcInputFormat.java:68)
    at org.apache.hadoop.mapreduce.lib.input.DelegatingRecordReader.<init>(DelegatingRecordReader.java:57)
    at org.apache.hadoop.mapreduce.lib.input.DelegatingInputFormat.createRecordReader(DelegatingInputFormat.java:129)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.<init>(MapTask.java:512)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
    at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
java.lang.Exception:java.lang.NoClassDefFoundError:org/apache/hadoop/hive/common/io/DiskRange
位于org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
在org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)上
原因:java.lang.NoClassDefFoundError:org/apache/hadoop/hive/common/io/DiskRange
位于org.apache.orc.OrcFile.createReader(OrcFile.java:342)
位于org.apache.orc.mapreduce.OrcInputFormat.createRecordReader(OrcInputFormat.java:68)
位于org.apache.hadoop.mapreduce.lib.input.DelegatingRecordReader。(DelegatingRecordReader.java:57)
位于org.apache.hadoop.mapreduce.lib.input.DelegatingInputFormat.createRecordReader(DelegatingInputFormat.java:129)
位于org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader。(MapTask.java:512)
位于org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:755)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
位于org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在java.util.concurrent.FutureTask.run(FutureTask.java:266)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
运行(Thread.java:748)

我正在使用OrcStruct和hive.ql.io.orc.OrcSerde的本机orc库,这导致了异常。现在我正在使用hive.ql.io.orc中的所有库。

首先,您的所有依赖项都一致吗?您是否为集群使用了正确版本的MR/ORC?Dude,您能否在pastebin中共享您的代码,使用Java map reduce使用hive.ql.io.ORC库读取数据?我的代码基于和