Hive简述
一、Hive简介
1.1 hive是什么
(1) Hive是一个SQL解析引擎,将SQL语句转化成MR Job。
(2) Hive中的表是纯逻辑表,就只是表的定义等,即表的元数据。本质就是hadoop的目录文件,达到元数据与数据存储分离的目的。
(3) hive本身不存储数据,完全依赖于hdfs和mapreduce。
(4) hive的内容是读多写少,不支持对数据的改写和删除。
(5) hive中没有定义专门的数据格式,由用户指定,需要指定三个属性:
· 列分隔符 空格,',','\t'
· 行分隔符 '\n' (etl处理时,防止数据串行)
· 读取文件数据的方法
1.2 Hive VS 传统数据库
Hive 和传统数据库除了拥有类似的查询语言,再无类似之处。
1)数据存储位置
Hive 存储在 HDFS ,默认的计算框架是MapReduce。数据库将数据保存在块设备或者本地文件系统中,是自己设计的计算模型。
2)数据更新
Hive中不建议对数据的改写。而数据库中的数据通常是需要经常进行修改的,
3)执行延迟
Hive 为海量数据做数据挖掘设计的,执行延迟较高。关系型数据库为实时查询的业务设计的,执行延迟低。当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势。
4)数据规模
Hive很容易扩展自己的存储能力和计算能力,支持大规模的数据计算;数据库可以支持的数据规模较小。
1.3 hive的架构
提交Hql的流程(如何将Hive与hadoop联系起来):
Hive端:
用户提交executeQuery给Driver端,Driver端生成一个plan给Compiler,Compiler进行编译之后,向MetaStore获取元数据信息,MetaStore将元数据信息(sql以及对应字段)返回给compiler,compiler将plan(解析出来的语法树)反馈给driver端,driver端以任务的形式,将executePlan提交给ExecutionEngine。
Hadoop端:
JobTracker收到ExecutionEngine提交的executionJob后,namenode和JobTracker将任务分发给TaskTracker,执行Map和Reduce操作,终结果反馈给ExecutionEngine,将其结果展示给用户。
二、Hive实操
2.1创建表
2.1.1内部表
数据来源:
链接:https://pan.baidu.com/s/1P1LzgCLppVTl9T-R1zf8Ow
提取码:hwln
内部表创建:
create table article(sentence string) row format delimited fields terminated by ‘\n’;
相关文章