我正在运行一个spark-thriftserver,以便可以对存储在配置单元表中的数据执行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指向的是本地配置单元安装,因为我唯一一次能够通过thriftserver显示表时,它指向的是本地存储在机器上的表(而不是存储在hdfs中的表)。我在beeline中创建了这些表,由于我认为beeline配置不正确,所以这些表是在本地而不是在hdfs中创建的。我已经直接连接到运行sparksql的端口,所以我想这就解释了为什么这两个软件有相同的问题。
我应该设置什么配置才能使thriftserver与正确的配置单元安装一起工作?我注意到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>
2条答案
按热度按时间2ic8powd1#
您需要在中设置以下属性
hive-site.xml
; 示例使用mariadb驱动程序和mysql。of1yzvn42#
您需要使用关系数据库作为配置单元的元存储,并确保在运行hiveserver2的服务器上的hive-site.xml中设置了database conn str。
https://cwiki.apache.org/confluence/display/hive/adminmanual+metastoreadmin 可能会有帮助