问题1 报错: schematool -dbType mysql -initSchema 时报错:
Schema initialization FAILED! Metastore state would be inconsistent !!
问题分析:
由日志分析
Metastore connection URL: jdbc:derby:;databaseName=metastore_db;create=true
Metastore Connection Driver : org.apache.derby.jdbc.EmbeddedDriver
Metastore connection User: APP
虽然配置了mysql 连接,但是配置在了hive-site 开头 被后面的derby 覆盖,
msyql 连接应该配置在最后面
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8</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>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.0.1:9083</value>
</property>
问题2 :hive 启动后执行命令报错:
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
分析 : 需要启动元数据服务
hive --service metastore
问题3 执行show databases 或show tables 时报错:
Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D
解决:在hive-site 中加入:
<property>
<name>system:java.io.tmpdir</name>
<value>/opt/hive/iotmp</value>
</property>
<property>
<name>system:user.name</name>
<value>hive</value>
</property>
hive启动成功