第一步先认真的检查一下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终于解决了。