繁体   English   中英

如何在Cloudera hadoop中使用外部jar?

[英]how to use external jars in Cloudera hadoop?

我在集群上安装了cloudera hadoop版本4。 它随附于Google protobuffer jar版本2.4。 在我的应用程序代码中,我使用由protobuffer 2.5版编译的protobuffer类。

这会在运行时导致无法解决的编译问题。 有没有一种方法可以使用外部jar来运行map reduce作业,或者在cloudera升级其服务之前我一直处于困境?

谢谢。

是的,您可以使用外部jar运行MR作业。

像下面的示例一样,提交作业时,请确保将所有依赖项都添加到HADOOP_CLASSPATH-libjars中:

您可以使用以下命令从当前目录和lib目录添加所有jar依赖项:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`

请记住,通过hadoop jar开始作业时,还需要通过使用-libjars来传递任何依赖项的-libjars 我喜欢使用:

hadoop jar <jar> <class> -libjars `echo ./lib/*.jar | sed 's/ /,/g'` [args...]

注意: sed命令需要使用不同的定界符; HADOOP_CLASSPATH:分离, -libjars,分离。

编辑:如果您需要首先解释类路径以确保您的jar(而不是预包装的jar)是被使用的,则可以设置以下内容:

export HADOOP_USER_CLASSPATH_FIRST=true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM