大数据入门学习笔记(陆)- 大数据数据仓库Hive

Hive产生背景及Hive是什么

Hive产生的背景

  • MapReduce编程的不便性
  • HDFS上的文件缺少Schema
    Hive是什么
  • 由Facebook开源,最初用于解决海量结构化的日志数据统计问题
  • 构建在Hadoop之上的数据仓库
  • Hive定义了一种类SQL查询语言: HQL(类似SQL但不完全相同)
  • 通常用于进行离线数据处理(刚开始采用MapReduce )
  • 底层支持多种不同的执行引擎;
    【Hive底层的执行引擎有:MapReduce、Tez、Spark】
    【Hive on MapReduce,Hive on Tez,Hive on Spark】
  • 支持多种不同的压缩格式、存储格式以及自定义函数
    【压缩:GZIP、LZO、Snappy、BZIP2…】
    【存储:TextFile、SequenceFile、RCFile、ORC、Parquet】
    【UDF:自定义函数】

为什么要使用Hive及Hive发展历程

为什么要使用Hive

  • 简单、容易上手(提供了类似SQL查i言HQL)
  • 为超大数据集设计的计算/存储扩展能力(MR计算, HDFS存储)
  • 统一的元数据管理(可与Presto/Impala/SparkSQL等共享数据)
    Hive发展历程
    官方版本更新详细目录
    http://hive.apache.org/downloads.html
    Hive在Hadoop生态系统的位置
    在HDFS和Yarn之上的在这里插入图片描述

Hive体系架构及部署架构

Hive体系架构

在这里插入图片描述
第一行:hive访问方式shell以及Thrift/JDBC
第二行:元数据管理(Metastore);
Drive中首先解析SQL(SQL Parser)生成逻辑执行计划,然后对逻辑执行计划进行优化(Query Optimizer),最后生成物理执行计划(Physical Plan其中包括序列化反序列化和UDF函数(SerDes和UDFs)),生成最终的执行引擎(Execution)提交到MapReduce
第三行:元数据存放的位置(MySQL);
提交到计算引擎(MapReduce)的输入输出-HDFS、HBase等

部署架构–测试环境

在这里插入图片描述

部署架构–生产环境

在这里插入图片描述
其中MySQL、ResourceManage、NameNode都要主从设备;
Hive只需要在集群中装一个或者两个作为客户端使用即可

Hive环境搭建

  1. Hive下载:http://archive.cloudera.com/cdh5/cdh/5/
    wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz

  2. 解压
    tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/

  3. 配置
    系统环境变量(~/.bahs_profile)
    export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
    export PATH= H I V E H O M E / b i n : HIVE_HOME/bin: HIVEHOME/bin:PATH

    实现安装一个mysql, yum install xxx,或者tar包安装

    在conf下找到hive-site.xml配置 hive-site.xml

<property>
 	<name>javax.jdo.option.ConnectionURL</name>
   	<value>jdbc:mysql://localhost:3306/sparksql?createDatabaseIfNotExist=true</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>root</value>
   </property>
  1. 拷贝mysql驱动到$HIVE_HOME/lib/

  2. 启动hive: $HIVE_HOME/bin/hive

Hive基本使用

官网DDL操作
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

创建表

CREATE  TABLE table_name 
  [(col_name data_type [COMMENT col_comment])]
  
create table hive_wordcount(context string);

加载数据到hive表

LOAD DATA LOCAL INPATH 'filepath' INTO TABLE tablename 

load data local inpath '/home/hadoop/data/hello.txt' into table hive_wordcount;

使用sql做wordcount

select word, count(1) from hive_wordcount lateral view explode(split(context,'\t')) wc as word group by word;

lateral view explode(): 是把每行记录按照指定分隔符进行拆解

hive ql提交执行以后会生成mr作业,并在yarn上运行
在这里插入图片描述

##练习##
员工表emp.txt
编号|名称|岗位|上级领导编号|入职时间|工资|津贴|部门编号
在这里插入图片描述
部门表 dept.txt
在这里插入图片描述

create table emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

create table dept(
deptno int,
dname string,
location string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

load data local inpath '/home/hadoop/data/emp.txt' into table emp;
load data local inpath '/home/hadoop/data/dept.txt' into table dept;

求每个部门的人数
select deptno, count(1) from emp group by deptno;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值