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中数据。

猜你喜欢

转载自blog.csdn.net/fansy1990/article/details/88635481