繁体   English   中英

通过Oozie 4.1.0.3在Spark中运行Hive查询

[英]Running Hive Query in Spark through Oozie 4.1.0.3

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

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

使用的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:最终应用程序状态: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)

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

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

B. Hadoop组件在CLASSPATH中搜索X站点配置文件; 如果他们没有在那里找到他们,他们会默默地回归到默认状态

所以你必须告诉Oozie通过<file>指令将它们下载到本地CWD。 (除了显式的Hive Action,它使用另一个显式的约定,用于其特定的hive-site,但这不是这里的情况)

  1. 不需要hive-default.xml。
  2. 创建一个自定义的hive-site.xml,它仅具有hive.metastore.uris属性。
  3. 将--files hive-site.xml中的自定义hive-site.xml作为spark Arguments传递。
  4. 删除job-xml属性和oozie-hive-defaults。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM