Hive:环境搭建及例子

Hive是由Facebook最初开发的基于Hadoop的数据仓库工具,提供了类SQL的查询语言Hive SQL(HQL)。

在内部,Hive将用户的SQL语句转化为一系列的MapReduce作业,并提交到集群中运行。

在Hive中,数据通过表来组织,提供了一种将表结构附加(attaching)到HDFS中的数据的一种方式。诸如表的Schema等元数据存放在一个称为metastore的数据库中。默认情况下,metastor存放在本地,但是可以配置在远程共享,这通常在生成环境中使用。

Hive整体架构如下;

image_1aorqv69b184sbetjp6sni19e11g.png-494.8kB

下载安装

下载稳定版本,留意与Hadoop版本的兼容:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.0.0/apache-hive-2.0.0-bin.tar.gz

tar -zxvf apache-hive-2.0.0-bin.tar.gz 

mv apache-hive-2.0.0-bin /home/hive-2.0.0

vim /etc/profile

export HIVE_HOME=/home/hive-2.0.0
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile

确保集群中配置了HADOOP_CONF_DIR环境变量,以便Hive可以找到集群配置。

配置metastore

metastore的3种模式:

  • Embedded metastore:

image_1aorp4qq86fn1pnl126o72q1s2h9.png-143.1kB

  • Local metastore:

image_1aorp5rkd1g9ffkuk8a17s5hevm.png-259.1kB

  • Remote metastore

image_1aorp6k6t4slgsa1hlfiu61qds13.png-361.4kB

Local模式配置

创建数据库用作metastore:

create database hive;

hive-site.xml

<configuration>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.1.132:3306/hive?characterEncoding=UTF-8</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>yourpasssword</value>
    </property>
</configuration>

把MySQL JDBC驱动上传到hive的lib目录下。

初始化:

schematool -initSchema -dbType mysql

image_1aors6tf3u0r1eo1curatltq020.png-54.5kB

启动Hive:

% hive

image_1aors80h79pooqo1ikphc055t2d.png-49kB

image_1aors9oj4vdb1q1q3fc1gqb1djr2q.png-14.5kB

简单实例

创建表

create table records(year string , temperature int ,quality int) row format delimited fields terminated by '\t'

成功之后,我们可以在mysql的元数据中看到这个表的信息,在hive.TBLS表中:

image_1aorsikihfj11oe1n4dtttnf337.png-52.7kB

导入数据

将HDFS的文件导入Hive:

load data inpath "/input/ncdc/micro-tab/sample.txt"
overwrite into table records;

image_1aorsuf2q183ddh4hsrdbv1ii441.png-11.7kB

在/user/hive/warehouse目录下可以看到下面的文件:

image_1aorssii21s7r13k12h8t35191h3k.png-17.7kB

查询数据

Hive跟语法跟MySQL非常像,如下查询表中所有数据:

select * from records;

image_1aort2sd41cipag61ot41ujk1mn64e.png-17.7kB

来一个分组查询:

select year , max(temperature) 
from records  
where temperature != 9999 and quality in ( 0,1,4,5,9) 
group by year;

image_1aorta6771r3o1mgk1d0j54nl3c4r.png-70.4kB

可以看到Hive启动了一个MapReduce作业,计算得到最终结果。YARN管理界面可以看到该作业:

image_1aortcu3gc6tskf19qhaii1ia358.png-64.3kB

Hive Server

启动HiveServer2

hiveserver2

image_1aorts7vhqpr14u0o3e1av91t8i5l.png-37kB

此时在默认的10020端口可以访问的hive界面:

image_1aorttlkgb9v1c7lmh6k821egn62.png-114.8kB

(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值