hive 工作分享总结

在整理一下整理,后续上传

1. 数据家谱: 2

1.1. Hive 是什么? 2

1.2. 数据仓库 2

1.3. Hive与传统数据库的区别 3

1.4. Hive的优缺点 3

1.5. Hive使用场景 4

1.6. Hdfs 运行机制 4

1.7. Mapreduce 运行机制 4

1.8. SQL转化成MapReduce过程 5

1.9. Hive 架构: 6

2. Hive交互方式 8

2.1. Hive交互shell 8

2.2. JDBC交互 8

2.3. 第三种交互方式: 10

3. Hive 基础 10

3.1. hive 支持的基本类型 10

3.2. 基本SQL语句 12

3.3. 排序 12

3.4. 行转列 13

3.5. 列转行 13

3.6. hive 内连接外连接 14

3.7. Hive 存储格式 15

3.8. 内部表/外部表 19

3.9. hive元数据存储 20

3.10. 分区: 21

3.11. 分桶: 22

4. 遇到的问题; 24

4.1. Hive sql 执行的顺序与mysql 对比: 24

4.2. Hive update 需要表设置 26

4.3. Hive脚本中设置变量 29

4.4. 批量更新语法 30

4.5. 函数 32

4.6. Hive 自定义udf 函数 32

4.7. Hive 优化: 35

4.8. Hadoop SecondaryNameNode异常排查 39

5. Sqoop语句如下: 40

6. Hive 高级函数: 42

  1.  数据家谱:
  1. 关系型数据库
  2. 非关系型数据库
  3. 数据仓库

 

 

    1. Hive 是什么?

Hive 是一个类SQL 能够操作hdfs 数据的数据仓库基础架构

Hive 是一个SQL 的解析引擎,能够将HSQL翻译MR在hadoop 中执行。

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

总结:

Hive 是一个类SQL 能够操作hdfs 数据的数据仓库基础架构

Hive 是一个SQL 的解析引擎,能够将HSQL翻译MR在hadoop 中执行。

 

    1. 数据仓库

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制简而言之,数据仓库是用来做查询分析的数据库,基本不用来做插入,修改删除

    1. Hive与传统数据库的区别

对变项

Hive

数据库软件

查询语言

HQL

SQL

数据存储

HDFS

Raw Devce or Loal FS

执行器

MapReduce

Executor

数据插入

支持批量导入/单条插入

支持单条或者批量导入

数据操作

覆盖追加(0.14版本支持行级更新)

行级更新删除

处理数据规模

执行延迟

分区

支持

支持

索引

0.8版本之后加入了索引

支持复杂的索引

扩展性

有限

数据加载模式

读时模式(快)

写时模式(慢)

应用场景

海量数据查询

实时查询

注意hive读时模式:Hive在加载数据到表中的时候不会校验.

(备注 读模式
数据被加载到数据库的时候,不对其合法性进行校验,只在查询等操作的时候进行校验,特点:加载速度快,适合大数据的加载
写模式
数据被加载到数据库的时候,需对其合法性进行校验,数据库中的数据都是合法的数据,特点:加载速度慢,但是查询速度快。)

写时模式:Mysql数据库插入数据到表的时候会进行校验.

总结:Hive只适合用来做海量离线的数据统计分析,也就是数据仓库。

    1. Hive的优缺点

优点:操作接口采用了类SQL语法,提供快速开发的能力,避免了去写MapReduce;Hive还支持用户自定义函数,用户可以根据自己的需求实现自己的函数。

缺点:Hive查询延迟很严重。

    1. Hive使用场景
  • 数据的离线处理;比如:日志分析,海量结构化数据离线分析…
  • Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求不高的场合;
  • Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。
    1. Hdfs 运行机制

 

https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html

 

    1. Mapreduce 运行机制

 

    

参考:http://blog.itpub.net/31537832/viewspace-2155638/

https://blog.csdn.net/oTengYue/article/details/91129850

 

    1. SQL转化成MapReduce过程
  • Hive是如何将SQL转化为MapReduce任务的,整个编译过程分为六个阶段:
    • 1-Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree;
    • 2-遍历AST Tree,抽象出查询的基本组成单元QueryBlock;
    • 3-遍历QueryBlock,翻译为执行操作树OperatorTree;
    • 4-逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量;
    • 5-遍历OperatorTree,翻译为MapReduce任务;
    • 6-物理层优化器进行MapReduce任务的变换,生成最终的执行计划。
    •  

 

 

    1. Hive 架构:

 

 

​ (1)用户接口:CLI(hive shell);JDBC(java访问Hive);WEBUI(浏览器访问Hive)

​ (2)元数据:MetaStore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段,标的类型(表是否为外部表)、表的数据所在目录。这是数据默认存储在Hive自带的derby数据库中,推荐使用MySQL数据库存储MetaStore。

(3)Hive使用HDFS存储数据(.Hadoop集群):

使用HDFS进行存储数据,使用MapReduce进行计算。

(4)Driver:驱动器

解析器(SQL Parser):将SQL字符串换成抽象语法树AST,对AST进行语法分析,像是表是否存在、字段是否存在、SQL语义是否有误。

编译器(Physical Plan):将AST编译成逻辑执行计划。

优化器(Query Optimizer):将逻辑计划进行优化。

执行器(Execution):把执行计划转换成可以运行的物理计划。对于Hive来说默认就是Mapreduce任务。

 

猜你喜欢

转载自blog.csdn.net/JHON07/article/details/113583021