0%

hive下载安装

hive下载安装

使用的版本是3.1.2

下载

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

配置环境变量

在.bash_profile中进行配置

1
2
export HIVE_HOME=/usr/local/myself/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH

之后刷新

1
source ~/.bash_profile

由于hive依赖于hadoop环境,所以需要将hadoop启动起来

这里我用的hadoop是3.3.0

启动hive

初始化元数据库

1
bin/schematool -dbType derby -initSchema
1
2
# 如果不初始化元数据库的话,在后续操作hive的时候会出现错误
HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

之后启动

1
bin/hive

注意在启动的时候有个提示:Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

表示Hive-on-MR已经被废弃了

进入hive命令行

1
hive> 

之后操作数据库,操作表的方式与sql语句大致相似了

在hive中插入的数据会存入到hdfs中

之前初始化元数据的时候使用的deType是derby,但是使用derby会存在一些问题,在启动了一个hive客户端之后,产生的元数据信息就被占用了,如果此时在启动一个hive客户端的话就会出现错误

1
Another instance of Derby may have already booted the database /usr/local/myself/apache-hive-3.1.2-bin/metastore_db

可以将元数据的存储改为Mysql

hive元数据存储配置

首先将mysql的驱动包放入到hive下的lib目录中(/usr/local/myself/apache-hive-3.1.2-bin/lib)

配置hive-site.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc 连接的 Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc 连接的 username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc 连接的 password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- Hive 元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>

在mysql中创建数据库metastore

使用mysql初始化元数据库

1
bin/schematool -dbType mysql -initSchema