本文主要介绍如何为 spark sql 的 metastore 配置成 mysql 。
spark 的版本 2.4.0 版本
hive script 版本为 hive 1.2.2
mysql 为 5.7.18
mysql 的安装部署就不在这里介绍了。
首先为 mysql 的root 用户设置密码
mysql -uroot > set password= password('mysql');
设置mysql 允许其他机器登录
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
创建一个新的database
> CREATE DATABASE metastore;
初始化创建hive 的metastore 表
> use metastore; > source /opt/hive-1.2.2/scripts/metastore/upgrade/mysql/hive-schema-1.2.0.mysql.sql;
初始化过程中,会报告一些错误,但是不影响后续的对接,错误信息如下
ERROR: Failed to open file 'hive-txn-schema-0.13.0.mysql.sql', error: 2
从 Oracle 官网下载 mysql 的jdbc 驱动,然后将 jdbc jar 包放到 ${SPARK_HOME}/jars 目录下。
配置 spark sql 的hive-site.xml 配置文件,新增以下内容
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://HOSTNAME/metastore</value> <description>the URL of the MySQL database</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>DB_USER</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>DB_PASSWD</value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>false</value> </property> <property> <name>datanucleus.fixedDatastore</name> <value>true</value> </property>
HOSTNAME,填写mysql 的ip 地址或者hostname
DB_USER,填写mysql 的登陆用户名
DB_PASSWD,填写mysql 的登陆密码
然后直接启动 spark-sql 命令,执行 show tables 测试是否正常,不报错即为正常。
Cloudera 官网中,详细地介绍了如何为 hive metastore 配置 mysql, postgresql 和 oracle 数据库,具体地址为:
https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_hive_metastore_configure.html