2015-10-13 55 views
3

在java中使用Oozie 4.1.0.3版在Spark中運行Hive Query時發現表未找到異常。通過Oozie 4.1.0.3在Spark中運行Hive查詢

複製蜂房-site.xml中和蜂房default.xml中從HDFS路徑中使用

workflow.xml:

<start to="scala_java"/> 
<action name="scala_java"> 
<java> 
<job-tracker>${jobTracker}</job-tracker> 
<name-node>${nameNode}</name-node> 
<job-xml>${nameNode}/user/${wf:user()}/${appRoot}/env/devbox/hive- site.xml</job-xml> 
<configuration> 
<property> 
<name>oozie.hive.defaults</name> 
<value>${nameNode}/user/${wf:user()}/${appRoot}/env/devbox/hive-default.xml</value> 
</property> 
<property> 
<name>pool.name</name> 
<value>${etlPoolName}</value> 
</property> 
<property> 
<name>mapreduce.job.queuename</name> 
<value>${QUEUE_NAME}</value> 
</property> 
</configuration> 
<main-class>org.apache.spark.deploy.SparkSubmit</main-class> 
<arg>--master</arg> 
<arg>yarn-cluster</arg> 
<arg>--class</arg> 
<arg>HiveFromSparkExample</arg> 
<arg>--deploy-mode</arg> 
<arg>cluster</arg> 
<arg>--queue</arg> 
<arg>testq</arg> 
<arg>--num-executors</arg> 
<arg>64</arg> 
<arg>--executor-cores</arg> 
<arg>5</arg> 
<arg>--jars</arg> 
<arg>datanucleus-api-jdo-3.2.6.jar,datanucleus-core-3.2.10.jar,datanucleus- rdbms-3.2.9.jar</arg> 
<arg>TEST-0.0.2-SNAPSHOT.jar</arg> 
<file>TEST-0.0.2-SNAPSHOT.jar</file> 
</java> 

INFO yarn.ApplicationMaster:最終應用狀態:失敗,EXITCODE:15, (原因:用戶類拋出的異常:找不到表test_hive_spark_t1)

異常在線程「驅動程序」 org.apache.hadoop.hive.ql.metadata.InvalidTableException:表中未發現test_hive_spark_t1

at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:980) 

    at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:950) 

    at org.apache.spark.sql.hive.HiveMetastoreCatalog.lookupRelation(HiveMetastoreCatalog.scala:79) 

    at org.apache.spark.sql.hive.HiveContext$$anon$1.org$apache$spark$sql$catalyst$analysis$OverrideCatalog$$super$lookupRelation(HiveContext.scala:255) 

    at org.apache.spark.sql.catalyst.analysis.OverrideCatalog$$anonfun$lookupRelation$3.apply(Catalog.scala:137) 

    at org.apache.spark.sql.catalyst.analysis.OverrideCatalog$$anonfun$lookupRelation$3.apply(Catalog.scala:137) 

    at scala.Option.getOrElse(Option.scala:120) 

    at org.apache.spark.sql.catalyst.analysis.OverrideCatalog$class.lookupRelation(Catalog.scala:137) 
    at org.apache.spark.sql.hive.HiveContext$$anon$1.lookupRelation(HiveContext.scala:255) 
+0

「默認」配置文件僅用於**用戶信息** - 它們是在安裝時從JAR中的硬編碼默認值創建的。這是包含有用信息的「站點」配置文件,例如如何連接到Metastore(默認是*「只需啓動一個嵌入式Derby DB,內部沒有數據」* ...可能會解釋「表未找到消息!」) –

+0

感謝您的回覆Samson。我有有效的條目在hive-site.xml中,應用程序通過spark提交正常運行,但通過oozie,我得到了一個沒有發現異常的表 –

+0

@VenkidusamyK我有同樣的問題,你有沒有找到解決方案? –

回答

0

A.X-默認配置文件只是對用戶信息;它們是在安裝時從JAR中的硬編碼默認值創建的。

這是X站點配置文件包含有用的信息,例如,如何連接到Metastore(默認爲是「剛開始一個嵌入式Derby數據庫裏面沒有數據」 ...或許可以解釋「表中找不到消息!

B.的Hadoop組件搜索X-現場配置文件在CLASSPATH;如果他們不容易找到他們,他們默默地退回到默認

所以,你一定要告訴Oozie的通過<file>指示將其下載到本地CWD 。 (除了明確的Hive使用另一個明確的,約定其具體蜂箱現場但這裏並非如此操作)不需要

0
  1. 蜂房default.xml中。
  2. 創建一個自定義的hive-site.xml,並且只有hive.metastore.uris屬性。
  3. 將--files hive-site.xml中的自定義hive-site.xml作爲spark參數傳遞。
  4. 刪除job-xml屬性和oozie-hive-defaults。
相關問題