如何从Beeline或任何JDBC客户端运行Spark作业上的Hive?

apa*_*tni 1 hadoop hive jdbc apache-spark

我试图在Spark查询上运行Hive(使用Spark作为执行引擎进行Hive查询).我已经在hive-site.xml中设置了它

我已经启动了一个hiveserver2,并尝试使用Beeline在同一台机器上连接它,如下所示:

$ hiveserver2 &
$ $HIVE_HOME/bin/beeline -u jdbc:hive2://myIP:10000 -e "select count(*) from item;"  
Run Code Online (Sandbox Code Playgroud)

但工作没有提交,我得到以下的恐惧

Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask (state=08S01,code=1)
Run Code Online (Sandbox Code Playgroud)

以下是与Spark上的Hive一起正常工作:

使用Hive CLI:

$ $HIVE_HOME/bin/hive -e "select count(*) from item;"
Run Code Online (Sandbox Code Playgroud)

使用Beeline嵌入模式:

$ $HIVE_HOME/bin/beeline -u jdbc:hive2:// -e "select count(*) from item;"
Run Code Online (Sandbox Code Playgroud)

PS:hive-site.xml包含以下属性:

<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>

<property>
<name>spark.master</name>
<value>yarn-cluster</value>
</property>

<property>
<name>spark.eventLog.enabled</name>
<value>true</value>
</property>

<property>
<name>spark.eventLog.dir</name>
<value>file:///tmp/spark-events</value>
</property>

<property>
<name>spark.executor.memory</name>
<value>512m</value>
</property>

<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>
Run Code Online (Sandbox Code Playgroud)

编辑:在日志中找到:

INFO  [stderr-redir-1]: client.SparkClientImpl (SparkClientImpl.java:run(569)) - ERROR: org.apache.hadoop.security.authorize.AuthorizationException: User: root is not allowed to impersonate anonymous
Run Code Online (Sandbox Code Playgroud)

He *_*ang 5

我有同样的问题,用hive-2.0.0和spark 1.4.2运行Hive-on-Spark.要克服它,只需将以下属性添加到hadoop配置文件core-site.xml:

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
 </property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
Run Code Online (Sandbox Code Playgroud)

祝好运.

  • 您可能需要将属性名称中的"**root**"更改为您的实际登录帐户名. (2认同)