Spark读取Hive on Tez任务问题

Posted fansy1990

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark读取Hive on Tez任务问题相关的知识,希望对你有一定的参考价值。

Spark读取Hive on Tez任务问题

这篇博客定义为“翻译”,其实不太准确,并没有严格意义翻译某篇文章。主要是受了 Hive-on-Tez issue in Spark Jobs when using Hortonworks 这篇文章的启发,解决了问题,才写此文(此文的解决和原文提到的两个解决方案有部分不同)。

参考 Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found出现的问题后续,由于HDP集群调整Hive引擎为Tez后,出现的问题。具体问题如下:

19/03/18 10:40:16 INFO client.TezClient: Session mode. Starting session.
19/03/18 10:40:16 INFO client.TezClientUtils: Using tez.lib.uris value from configuration: /hdp/apps/$hdp.version/tez/tez.tar.gz
19/03/18 10:40:16 ERROR client.TezClientUtils: Invalid URI defined in configuration for location of TEZ jars. providedURI=/hdp/apps/$hdp.version/tez/tez.tar.gz
19/03/18 10:40:16 ERROR yarn.ApplicationMaster: User class threw exception: java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid URI defined in configuration for location of TEZ jars. providedURI=/hdp/apps/$hdp.version/tez/tez.tar.gz
java.lang.RuntimeException: org.apache.tez.dag.api.TezUncheckedException: Invalid URI defined in configuration for location of TEZ jars. providedURI=/hdp/apps/$hdp.version/tez/tez.tar.gz

参考 Hive-on-Tez issue in Spark Jobs when using Hortonworks
可以知道,在远程发起Spark任务,读取Hive时,指定配置文件hive-site.xml时,这个hive-site.xml是哪个?

  • 指的是 /usr/hdp/current/hive-client/conf
  • 指的是/usr/hdp/current/spark-client/conf

总结

一般来说,spark-client 和hive-client中的hive-site.xml是一样的。

但是如果Hive的执行引擎设置为Tez的时候,Spark读取Hive的时候就不能使用hive-client中的hive-site.xml文件,而只能使用usr/hdp/current/spark-client/conf/hive-site.xml作为指定的–files 资源文件。这样才能在Hive on Tez的环境中使用调用Spark任务,进而读取Hive中数据。

以上是关于Spark读取Hive on Tez任务问题的主要内容,如果未能解决你的问题,请参考以下文章

Spark读取Hive on Tez任务问题

hive on spark VS SparkSQL VS hive on tez

hive on spark VS SparkSQL VS hive on tez

配置 Hive On Tez

hive on tez

tez和spark区别