Hive 默认使用 derby 作为映射表(SQL 操作映射为MapReduce Job,将SQL中创建的表映射为 hdfs 的文件/文件夹,字段映射为其中的行),但 derby 的一大缺陷在于它不允许多个客户端同时执行sql操作。不同的客户端看到的表和库的数目不一样,所以为了统一查看,将mysql作为hive的数据源。
一、Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:
允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,
具体操作如下:
[root@master hive-1.2.1]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.22 MySQL Community Server (GPL)
............
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******(此处填写你的root用户的密码)' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.12 sec)
mysql> exit;
Bye
二、在hive安装目录的conf文件夹中新建hive-site.xml文件。此文件中的配置将替换掉该目录下hive-default.xml.template文件。
[root@master system]# cd /apps/hive-1.2.1/conf/
[root@master conf]# vi hive-site.xml
文件内容:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?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>(你的密码)</value>
</property>
</configuration>
三、将jdbc驱动包放到hive/lib下面
[root@master hive-1.2.1]# mv /root/桌面/mysql-connector-java-5.1.21-bin.jar ./lib/
[root@master hive-1.2.1]# cd lib/
[root@master lib]# ll
-rw-------. 1 root root 827942 3月 16 2017 mysql-connector-java-5.1.21-bin.jar
否则报错:
Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
at org.datanucleus.store.rdbms.connectionpool.AbstractConnectionPoolFactory.loadDriver(AbstractConnectionPoolFactory.java:58)
at org.datanucleus.store.rdbms.connectionpool.BoneCPConnectionPoolFactory.createConnectionPool(BoneCPConnectionPoolFactory.java:54)
at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:238)
... 68 more