Hive简述

2020-07-01 00:00:00 数据 函数 执行 文件 大小

一、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 和传统数据库除了拥有类似的查询语言,再无类似之处。

Hive VS 传统数据库

1)数据存储位置

Hive 存储在 HDFS ,默认的计算框架是MapReduce。数据库将数据保存在块设备或者本地文件系统中,是自己设计的计算模型。

2)数据更新

Hive中不建议对数据的改写。而数据库中的数据通常是需要经常进行修改的,

3)执行延迟

Hive 为海量数据做数据挖掘设计的,执行延迟较高。关系型数据库为实时查询的业务设计的,执行延迟低。当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势。

4)数据规模

Hive很容易扩展自己的存储能力和计算能力,支持大规模的数据计算;数据库可以支持的数据规模较小。

1.3 hive的架构



提交Hql流程

提交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内部表

数据来源:

链接:pan.baidu.com/s/1P1LzgC

提取码:hwln

内部表创建:

create table article(sentence string) row format delimited fields terminated by ‘\n’;  

相关文章