在安装好了MySQL之后设置Hive用户
进入mysql命令行,创建Hive用户并赋予所有权限:
mysql -uroot -proot
mysql>set password=password('root');
mysql>create user 'hive' identified by 'hive';
mysql>grant all on *.* TO 'hive'@'%' with grant option;
mysql>flush privileges;
mysql>quit;
使用hive用户登录,创建Hive数据库:
mysql -uhive -phive
mysql>create database hive;
在创建hive的时候可能会出现:
ERROR 3680 (HY000): Failed to create schema directory 'hive' (errno: 13 - Permission denied)
需要提升权限:sudo chown -R mysql:mysql /usr/local/mysql/data
mysql>show databases;
在下载好hive
brew install hive
进入到hive的安装目录之下的conf目录之下 编辑hive-env.sh(首先将所有后缀为.template的文件复制一遍,新文件名称只需要去掉.template即可)
配置hive-env.xml
HADOOP_HOME:Hadoop根目录
HIVE_CONF_DIR:Hive配置文件夹
HIVE_AUX_JARS_PATH:Hive依赖jar包的路径
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/Cellar/hadoop/3.1.1
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/Cellar/hive/3.1.0/libexec/conf
# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/Cellar/hive/3.1.0/libexec/lib
配置hive-site.xml
cp hive-default.xml.template hive-site.xml
在配置文件中找到以下几个property修改value
我自己的配置文件为
<property>
<name>system:java.io.tmpdir</name>
<value>/usr/local/Cellar/hive/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&serverTimezone=GMT&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
1️⃣468行的thrift://localhost:9083
<property>
<name>hive.metastore.uris</name>
<value>thrift://localhost:9083</value>
<description>hive默认为derby数据库,derby数据只运行单个用户进行连接,这里需要调整为mysql
数据库 Used by metastore client to connect to remote metastore.
</description
</property>
2️⃣585行的ConnectionPassword修改为你自己MySQL数据库对应的ConnectionPassword
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mine</value>
<description>password to use against metastore database</description>
</property>
3️⃣在594行的ConnectionURL修改为你自己MySQL数据库对应的URL
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
4️⃣在799行的hive.metastore.schema.verification value值改为false
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
5️⃣在1104行的ConnectionDriverName修改为你自己MySQL数据库驱动
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
6️⃣在1123行的ConnectionUserName修改为你自己MySQL数据库用户名
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>APP</value>
</property>
<property>
<name>system:java.io.tmpdir</name>
<value>/usr/local/Cellar/hive/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
7️⃣在hive-site.xml的前面直接加入下面这段,其中/usr/local/Cellar/hive/tmp路径自己创建
<property>
<name>system:java.io.tmpdir</name>
<value>/usr/local/Cellar/hive/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
注意事项:
①自己需要将mysql-connector-java的jar包拷贝到 hive的lib目录之下 我的lib目录是 /usr/local/Cellar/hive/3.1.0/libexec/lib/
②hive需要配置到全局变量中,我的是在 .bash_profile中,配置之后需要source .bash_profile
③自己最后配置的时候没有使用metastore模式,也没有启动metastore
④其他错误看写的其他文章
登录hive,在hive创建表并查看该表,命令如下:
hive
hive>create table test(a string, b int);
hive>show tables;
hive>desc test;