微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

Hive和SparkSQL自定义UDF中依赖第三方Jar包

Hive lxw1234@qq.com 12385℃ 0评论

关键字:Hive udf、SparkSQL udf、 第三方jar包

当在Hive和SparkSQL中使用的自定义UDF函数需要依赖第三方jar包时,可以将所有jar包通过类似于fatjar等插件打在一起,但显得太麻烦、太累赘了。
其实只需要在运行时候将依赖的第三方jar包和udf函数jar包一起添加到CLASSPATH这种即可;

这里的SparkSQL指整合了Hive的。

Hive中添加第三方JAR包

1:启用hive-cli时候,使用–auxpath选项指定要添加的jar包,多个jar包以逗号分隔:

./hive –auxpath /tmp/lxw1234/lucene-core-3.6.0.jar,/tmp/lxw1234/IKAnalyzer2012_u6.jar,/tmp/lxw1234/udf.jar

2:进入hive-cli之后,使用ADD JAR命令添加jar包(推荐):

ADD JAR file:///tmp/lxw1234/lucene-core-3.6.0.jar;

ADD JAR file:///tmp/lxw1234/IKAnalyzer2012_u6.jar;

ADD JAR file:///tmp/lxw1234/udf.jar;
如果jar包放在hdfs上,则路径前面不需要加文件系统标识。

特别注意:这两种方式添加jar包时候,需要注意jar包的顺序,比如上面udf.jar中引用了IKAnalyzer2012_u6.jar中的类,而IKAnalyzer2012_u6.jar中引用了lucene-core-3.6.0.jar中的类,必须按照依赖顺序添加,否则还是会找不到类。

我测了如此。

3:其他方式,比如配置hive.aux.jars.path参数等都不推荐。

SparkSQL中添加第三方JAR包

1:如果udf jar包中没有引用第三方jar包,那么可以通过ADD JAR的方式添加;

2:如果udf jar包中引用了第三方jar包,那么使用ADD JAR添加时候仍然会报错找不到类(我测试如此)。

这时候需要通过spark-sql命令的–jars选项来指定:

./spark-sql –jars /tmp/lxw1234/lucene-core-3.6.0.jar,/tmp/lxw1234/IKAnalyzer2012_u6.jar,/tmp/lxw1234/udf.jar –master spark://lxw1234.com:7077

 

 

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Hive和SparkSQL自定义UDF中依赖第三方Jar包

喜欢 (6)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址