Hive入门

安装和配置

必要条件

  • Java1.7(提示:Hive1.2之后的版本需要Java1.7+,强烈建议迁移至Java1.8)
  • Hadoop2.x(优先),1.x(Hive2.0.0之后不支持)这里默认你已经安装好了且启动了
  • Linux(我用的CentOS7.5)
  • 已经启动的MySQL(我用的5.7)
  • mysql-connector-java包(我用的mysql-connector-java-8.0.15.jar)

安装稳定版Hive

首先从Hive官网下载最新稳定版本的Hive。
接下来你需要解压这个tar包(2.3.4是版本号)。

tar -xzvf hive-2.3.4.tar.gz

设置系统环境变量HIVE_HOME,它指向hive的安装目录。

vim /etc/profile

在文件最底部添加

#这里的/usr/local/soft/hive-2.3.4是我的Hive目录,你需要改成你自己的
export HIVE_HOME=/usr/local/soft/hive-2.3.4
export PATH=$PATH:$HIVE_HOME/bin

让上面环境变量立即生效

source /etc/profile

MySQL作为Hive元数据库

  • 拷贝mysql-connector-java包到Hive的lib目录下
  • 修改hive-site.xml
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://192.168.8.88:3306/hivedbnew?createDatabaseIfNotExist=true&amp;serverTimezone=Asia/Shanghai</value>
        		<!--确保远程MySQL允许远程访问--> 
                <!--注意多个参数得用转义符&amp;-->      
  		</property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>com.mysql.cj.jdbc.Driver</value>
                <!--注意我用的MySQL5.7,所以ConnectionDriverName是这个-->  
        </property>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
          		<!--MySQL的用户名-->  
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>mysqlpassword</value>
          		<!--MySQL的密码-->  
        </property>
		<property>
                <name>hive.cli.print.header</name>
                <value>true</value>
                <!--显示表头--> 
        </property>
        <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
                <!--显示库名--> 
        </property>
</configuration>
  • 从Hive2.1开始,我们需要执行如下schematool命令作为初始化步骤
schematool -dbType <db type> -initSchema

这里我们用的是MySQL,所以命令如下

schematool -dbType mysql -initSchema

#看到如下信息说明初始化完成了
Initialization script completed
schemaTool completed

查看MySQL,多了数据库和表,说明真的初始成功了。
在这里插入图片描述

运行Hive

启动Hadoop

Hive用到Hadoop,所以你必须有已经启动的Hadoop。

start-dfs.sh
start-yarn.sh

启动Hive CLI

#输入hive启动CLI,但是在Hive3.0后这个CLI去掉了
hive

查询所有数据库

在命令行>符号后面输入命令 show databases; (注意结尾的分号)来展示所有数据库名称。
命令行里>符号前面有(default),这个()里显示的时当前数据库的名称,default数据库是Hive的默认数据库。

show databases;

执行结果如下

hive (default)> show databases;
OK            #OK是指这条语句执行成功
database_name #这个是返回结果的表头,因为我设置了总是显示表头,所有显示了这行
default       #数据-Hive的默认数据库叫default
pigg          #数据-我自己创建的数据库叫pigg
Time taken: 0.008 seconds, Fetched: 2 row(s) #查询的耗时和行数

查询所有表

#查询当前数据库的表
show tables;

执行结果如下

#下面说明当前default库还没有表
hive (default)> show tables;
OK
tab_name
Time taken: 0.021 seconds

创建Hive表

HiveQL和SQL非常类似,下面语句是创建一个叫pokes的表

--创建一个叫pokes的表,它有2列,第一个列是int型,第二列是string型。
CREATE TABLE pokes (foo INT, bar STRING);

执行结果如下

hive (default)> CREATE TABLE pokes (foo INT, bar STRING);
OK
Time taken: 1.014 seconds

查询表,发现已经多了一个叫pokes的表

hive (default)> show tables;
OK
tab_name
pokes
Time taken: 0.023 seconds, Fetched: 1 row(s)

向表插入数据

在Hive目录的examples/files/下有许多测试文件,现在测试把kv1.txt文件的数据导入到Hive的pokes表里。

kv1.txt包含2列数据,两列通过^A分割,共500行数据,内容如下
在这里插入图片描述

--从本地文件中加载数据到Hive
LOAD DATA LOCAL INPATH 
'/usr/local/soft/hive-2.3.4/examples/files/kv1.txt' 
OVERWRITE INTO TABLE pokes;
  • 关键词’LOCAL’表示从本地文件系统;
  • 没有’LOCAL’表示从HDFS;
  • 关键词’OVERWRITE’表示覆盖表中已经存在的数据;
  • 没有’OVERWRITE’表示将文件追加到现有数据集中

结果如下,说明语句执行OK

hive (default)> LOAD DATA LOCAL INPATH 
              > '/usr/local/soft/hive-2.3.4/examples/files/kv1.txt' 
              > OVERWRITE INTO TABLE pokes;
Loading data to table default.pokes
OK
Time taken: 1.048 seconds

查询Hive表的数据

和普通SQL语法一样,执行select语句

select * from pokes;

结果如下

hive (default)> select * from pokes;
OK
pokes.foo	pokes.bar
238	val_238
86	val_86
311	val_311
27	val_27
165	val_165
409	val_409
255	val_255
...后面很多行

如果你成功执行到这一步,就算大概入个门吧,当然上面这些连Hive的皮毛都不称不上。
上面说了CLI方式已经过时了,取而代之的是Beeline,下一篇好好写HiveServer2和Beeline。
尤其HiveServer2是Hadoop生态圈很多工具都会用到,比较重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑟 王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值