3

使用 Oozie 版本 4.1.0.3 在 Spark 中运行 Hive 查询时获取表未找到异常,作为 java 操作。

从 hdfs 路径复制 hive-site.xml 和 hive-default.xml

使用的工作流.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:最终应用状态:FAILED,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)
4

2 回答 2

0

A. X-default配置文件仅用于用户信息;它们是在安装时根据 JAR 中的硬编码默认值创建的。

它是包含有用信息的X-site配置文件,例如如何连接到 Metastore(默认为“只启动一个没有数据的嵌入式 Derby DB” ......可能会解释“找不到表的消息!

B. Hadoop 组件在 CLASSPATH 中搜索X-site配置文件;如果他们在那里找不到它们,他们会默默地退回到default

因此,您必须告诉 Oozie 通过说明将它们下载到本地 CWD <file>。(除了一个显式的 Hive 操作,它为其特定的蜂巢站点使用另一个显式的约定,但这里不是这种情况)

于 2015-10-15T07:05:17.627 回答
0
  1. 不需要 hive-default.xml。
  2. 创建一个自定义 hive-site.xml 并且仅具有 hive.metastore.uris 属性。
  3. 将 --files hive-site.xml 中的自定义 hive-site.xml 作为 spark 参数传递。
  4. 删除 job-xml 属性和 oozie-hive-defaults。
于 2016-05-03T17:15:16.367 回答