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中數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章