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任务问题的主要内容,如果未能解决你的问题,请参考以下文章
hive on spark VS SparkSQL VS hive on tez