第一步先認真的檢查一下mysql中創建的hive數據和用戶名
1 create database hive default charset utf8 collate utf8_general_ci; 2 CREATE USER 'hive'@'%' IDENTIFIED BY 'Hive-123'; 3 GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%'; 4 FLUSH PRIVILEGES; 5 6 這個一定要增加,要不然本地連接會失敗,沒有權限 7 CREATE USER 'hive'@'localhost' IDENTIFIED BY 'Hive-123'; 8 GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost';
上面操作執行后還是有下面的錯誤出現。重點觀察到‘Failed to load driver’。
這種情況,猜測是缺少jdbc驅動,於是添加jdbc驅動到相應的包下面。報的錯中提示了lib路徑,添加一下即可。
/usr/hdp/3.0.1.0-187/hive/lib
cd /usr/share/java/
scp -r mysql-connector-java.jar slave1:/usr/hdp/3.0.1.0-187/hive/lib
scp -r mysql-connector-java.jar slave2:/usr/hdp/3.0.1.0-187/hive/lib
cp mysql-connector-java.jar /usr/hdp/3.0.1.0-187/hive/lib
單集群
修改 hive-site.xml 內容(全部刪除,可鍵入 ESC,然后輸入 10000dd 命令)為:
hadoop227@lql227mas102:/opt/module/hive-2.3.9/conf$sudo vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.27.102:3306/hive?createDatabaseIfNotExist=true&characterEncoding =UTF-8&useSSL=false</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property> </configuration>
jdbc驅動mysql-connector-java.jar選擇:
com.mysql.jdbc.Driver和mysql-connector-java 5.jar一起用。mysql-connector-java-5.0.8-bin.jar
com.mysql.cj.jdbc.Driver和mysql-connector-java 6.jar及更高的版本jar包 一起用。mysql-connector-java-8.0.11.jar
再次啟動hive,OK終於解決了。