当前位置: 首页 > 知识库问答 >
问题:

将外部JAR设置为hadoop类路径

花永昌
2023-03-14

我试图将外部jar设置为hadoop类路径,但目前还没有成功。

我可以看到上面的HADOOP_CLASSPATH已经被hadoop接收

$hadoop类路径
/etc/hadoop/conf:/usr/lib/hadoop/lib/://usr/lib/hadoop/.//:/home/tom/workspace/libs/opencsv-2.3.jar://usr/lib/hadoop-hdfs/./:/usr/lib/hadoop-hdfs////usr/lib/hadoop-hdfs/.//:/usr/lib/hadoop-hdfs/.//:OOP-MapReduce/.//

指挥

$sudo hadoop jar FlightsByCarrier.jar FlightsByCarrier/user/root/1987.csv/user/root/result

我也尝试了-libjars选项

$sudo hadoop jar FlightsByCarrier.jar FlightsByCarrier/user/root/1987.csv/user/root/result-libjars/home/tom/workspace/libs/opencsv-2.3.jar

stacktrace

14/11/04 16:43:23信息MapReduce.Job:正在运行的作业:job_1415115532989_0001 14/11/04 16:43:55信息MapReduce.Job:job_1415115532989_0001以uber模式运行:false 14/11/04 16:43:56信息MapReduce.Job:map 0%Reduce0%14/11/04 16:45:27信息MapReduce.Job:map 50%Reduce0%14/11/04 16:45:27信息MapReduce.Job:任务Id:adputt_1415115532989_0001M_000001,状态:失败错误:au.com.bytecode.opencsv.csvParser at java.net.urlClassLoader$1.run(urlClassLoader.java:366)at java.net.urlClassLoader$1.run(urlClassLoader.java:355)at java.security.accessController.doprivileged(本机方法)at java.net.urlClassLoader.findClass(urlClassLoader.java:354)at java.net.urlClassLoader.java:354)at apper.map(FlightsByCarrierMapper.java:19)位于flightsByCarrierMapper.map(FlightsByCarrierMapper.java:10)在org.apache.hadoop.mapreduce.mapper.run(mapper.java:144)在org.apache.hadoop.mapred.maptask.runnewmapper(Maptask.java:757)在org.apache.hadoop.maptask.run(maptask.java:339)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild.java:158)在java.security.auth.subject.doas security.usergroupinformation.doas(usergroupinformation.java:1478)位于org.apache.hadoop.mapred.yarnchild.main(yarnchild.java:153)

任何帮助都是非常感谢的。

共有1个答案

沙海
2023-03-14

运行映射的节点上缺少外部jar。您必须将其添加到缓存中以使其可用。尝试:

DistributedCache.addFileToClassPath(new Path("pathToJar"), conf);

不确定哪个版本的distributedcache不推荐使用,但从Hadoop 2.2.0开始,您可以使用:

job.addFileToClassPath(new Path("pathToJar")); 
 类似资料:
  • 我正在尝试在服务器上运行hadoop作业。版本为。 我有一大堆罐子,我在运行: 即使对应的类在JAR中,我也会得到下面的错误: 线程“main”java.lang.noClassDeffounder中出现异常错误:org/apache/avro/mapreduce/avrokeyInputFormat在generateTrainningData.main(generateTrainningData

  • 我正在将Apache FOP 1.0项目升级到Apache FOP 2.1。在这个项目中,所有必要的文件都打包在jar文件中。 我添加了新的FopFactoryBuilder以生成FopFactory 但是我所有的资源都是从文件系统上的相对路径加载的,而不是从 jar 加载的。如何将 baseURI 设置为 jar 的类路径? 谢谢。

  • 问题内容: 我有一个独立的Java项目。我已经执行了Maven全新安装。现在,我通过命令提示符进入target \ classes文件夹,并在classpath中设置所有必需的文件。现在我执行主类。结果正在显示。 现在,我通过命令提示符移回目标文件夹,并尝试执行jar文件(jar文件具有在其中定义了主类的清单文件)。 现在,我得到以下异常。我也从上面的语句中删除了classpath属性,但仍然遇到

  • 我有一个Hadoop作业,其中映射器必须使用外部jar。 我试图将这个jar传递给映射器的JVM 通过hadoop命令上的-libjars参数 via作业。addFileToClassPath HADOOP_CLASSPATH。 这些方法都不起作用。这是我得到的堆栈跟踪。它抱怨的缺失类是SparseDoubleMatrix1D在colt.jar. 如果我需要提供任何其他调试信息,请告诉我。谢谢

  • 我只是在尝试IntelliJ IDE,我想在java项目中添加一个外部jar。 我已经在

  • 我有一个标准的Spring靴项目。 我有一个/src/main/resources文件夹,其中有几个配置文件。 我怎样才能用Gradle做到这一点呢?