我在运行map reduce作业时遇到了一些问题。
我曾使用JSON jar处理HDFS中的JSON文件,并编写了逻辑,但在运行作业时遇到错误(无法找到类表示为ClassNotFoundException)。
我不知道HADOOP如何能够检测到我的jar放在哪里。
在哪里设置jar路径?在哪个文件中?
有人能解决我的问题吗?
发布于 2018-02-27 16:23:31
设置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发布于 2018-02-27 16:13:03
实际上,我不知道HADOOP如何能够检测到我的jar放在哪里
它从纱线容器的类路径中读取。
添加库的最简单方法是将所需的任何JSON库“隐藏”(使用Maven)到MapReduce程序的JAR文件中。
(可以说)更容易处理JSON的方法是使用Spark、Drill或Hive
发布于 2018-02-28 02:01:23
假设您的项目是一个maven项目,只需创建一个包含所有依赖jar的胖jar即可。请看这里:
https://www.mkyong.com/maven/create-a-fat-jar-file-maven-assembly-plugin/
并且依赖的jars将可用于类路径。另一种选择是将jar添加到driver类中的分布式缓存:
DistributedCache.addFileToClassPath(yourJar, conf);另一种选择是在hadoop类路径中设置jar。
export HADOOP_CLASSPATH=3rd_party_jarhttps://stackoverflow.com/questions/49003072
复制相似问题