hadoop - Spark Thriftserver 未连接到正确的 Hive 数据库

标签 hadoop apache-spark hive apache-spark-sql

我正在运行 Spark ThriftServer,以便可以针对存储在 Hive 表中的数据执行 Spark SQL 命令。

当我启动 beeline 来显示我当前的表格时:

user@mn~$ beeline
!connect jdbc:hive2://mn:10000
show tables;
+------------+--------------+--+
| tableName  | isTemporary  |
+------------+--------------+--+ 
+------------+--------------+--+

输出显示我的数据库中没有表。

但是,如果我使用(已弃用的)CLI hive,我会得到不同的输出:

user@mn:~$ hive
Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.p0.4/jars/hive-common-1.1.0-cdh5.4.4.jar!/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive> show tables;
OK
table_1
table_2
Time taken: 1.683 seconds, Fetched: 6 row(s)

我知道 beeline 的输出不正确,因为 HDFS 显示我的 Hive 存储中有表。

user@mn:~$ hadoop fs -ls /user/hive/warehouse
Found 9 items
drwxrwxrwt   - cloudera hive          0 2015-07-30 13:20 /user/hive/warehouse/table_1
drwxrwxrwt   - cloudera hive          0 2015-08-04 16:28 /user/hive/warehouse/table_2

此外,当我连接到 Spark Thriftserver(我使用 Tableau 查询数据)时,当我尝试查看当前架构中的所有表时,没有显示任何表。

我觉得 beeline CLI 和 Spark Thriftserver 共享某种配置问题,但我不确定它是什么。我非常确定 Thriftserver 指向本地 Hive 安装,因为我唯一一次能够通过 Thriftserver 显示表,它指向本地存储在计算机上的表(而不是存储在 HDFS 中的表)。我在 beeline 内创建了这些表,并且由于我认为 beeline 配置不正确,因此这些表是在本地创建的,而不是在 HDFS 中创建的。我确实有直线连接到 SparkSQL 正在运行的端口,所以我想这解释了为什么这两个软件有相同的问题。

我应该设置什么配置才能使 Thriftserver 与正确的 Hive 安装一起工作?我注意到 hive 命令加载了一些配置文件,这会包含答案吗?

非常感谢任何帮助。

编辑:

这是我的 hive-site.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>

<!--Autogenerated by Cloudera Manager-->
<configuration>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://w7:9083</value>
  </property>
  <property>
    <name>hive.metastore.client.socket.timeout</name>
    <value>300</value>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
  </property>
  <property>
    <name>hive.warehouse.subdir.inherit.perms</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.enable.spark.execution.engine</name>
    <value>false</value>
  </property>
  <property>
    <name>hive.conf.restricted.list</name>
    <value>hive.enable.spark.execution.engine</value>
  </property>
  <property>
    <name>mapred.reduce.tasks</name>
    <value>-1</value>
  </property>
  <property>
    <name>hive.exec.reducers.bytes.per.reducer</name>
    <value>67108864</value>
  </property>
  <property>
    <name>hive.exec.copyfile.maxsize</name>
    <value>33554432</value>
  </property>
  <property>
    <name>hive.exec.reducers.max</name>
    <value>1099</value>
  </property>
  <property>
    <name>hive.metastore.execute.setugi</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.support.concurrency</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.zookeeper.quorum</name>
    <value>mn</value>
  </property>
  <property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>mn</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <property>
    <name>hive.zookeeper.namespace</name>
    <value>hive_zookeeper_namespace_hive</value>
  </property>
  <property>
    <name>hive.cluster.delegation.token.store.class</name>
    <value>org.apache.hadoop.hive.thrift.MemoryTokenStore</value>
  </property>
  <property>
    <name>hive.server2.enable.doAs</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.server2.use.SSL</name>
    <value>false</value>
  </property>
</configuration>

最佳答案

您需要使用关系数据库作为 hive 的元存储,并确保在运行 hiveserver2 的服务器上的 hive-site.xml 中设置数据库 conn str。

https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin可能有帮助

关于hadoop - Spark Thriftserver 未连接到正确的 Hive 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397177/

相关文章:

linux - ambari + API 语法以更改 ambari 服务的参数

apache-spark - 在 map 列的 Spark 数据框中如何使用所有键的常量更新值

hbase - Hadoop Hive 从 hdfs 查询文件

regex - 配置对象配置单元表查询错误

hadoop - 如何杀死Hadoop fs -copyToLocal任务

oracle - 使用ODI将多个定界文件合并到Hive

hadoop - 使用Ambari逐步安装Plain hadoop集群

apache-spark - 如何在Spark中更有效地加载Parquet文件(pySpark v1.2.0)

hadoop - Parquet 上的 Spark 与 Hive 上的 Spark(Parquet 格式)

hadoop - Hive中的持续时间计算