如何在hadoop环境中添加外部Jar?

问题描述 投票:0回答:3

我在运行map reduce工作时遇到了一些问题。 我已经使用JSON jar来处理HDFS中的JSON文件并且我编写了逻辑,但是在运行作业时遇到错误(无法找到类意味着ClassNotFoundException)。 我不知道HADOOP如何能够检测到放置它的罐子。 在哪里设置jar路径和哪个文件? 谁能解决我的问题?

java hadoop mapreduce
3个回答
0
投票

实际上我不知道HADOOP如何能够检测到我的罐子放在哪里

它从YARN容器的类路径中读取。

添加库的最简单方法是,如果你在MapReduce程序的JAR文件中“遮蔽”(使用Maven)你需要的任何JSON库。


处理JSON的(可以说)更简单的方法是使用Spark,Drill或Hive


0
投票

设置HADOOP_CLASSPATH环境变量

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:<DEPENDENT_JARS_USED_BY_ CLIENT_CLASS>

提交作业时使用-libjars选项

hadoop jar example.jar com.example.Tool -libjars mysql-connector-java.jar,abc.jar

0
投票

假设你的项目是一个maven项目,只需创建一个包含所有依赖jar的胖罐。看这里:

https://www.mkyong.com/maven/create-a-fat-jar-file-maven-assembly-plugin/

并且依赖的jar将可用于类路径。另一个选择是将jar添加到驱动程序类中的Distributed cache:

DistributedCache.addFileToClassPath(yourJar, conf);

另一个选择是在hadoop类路径中设置jar。

export HADOOP_CLASSPATH=3rd_party_jar
© www.soinside.com 2019 - 2024. All rights reserved.