现象:
bin/hive这个交互性命令行不能同时开多个,开第二个就报错了
原因
hive中无论是创建的 数据库还是表 ,这些元数据metaStore需要存储
默认情况下存储在Derby数据库里面的,属于嵌入式数据,每次仅仅支持一个会话,
解决
使用支持多个会话的数据,推荐MySQL存储元素(官方推荐)
(1)创建配置文件
touch hive-site.xml
注意:如果在linux中直接使用vi/vim直接修改没问题,但是如果使用linux远程连接工具如,notepad++等打开编辑
这是我们需要的换行,解决,现在linux中使用vi顺便编辑,然后在使用notepad++打开编辑就没事了。
(2)修改配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://主机名/metaStore?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
(3)上传mysql数据库连接驱动到lib目录下
测试
(1)将metastore_db和derby.log删除
(2)启动bin/hive
(3)效果:
a):可以启动多个bin/hive交互性命令行