HIVE-所学复盘-1 - HIVE、MAPREDUCE基本概念

本文介绍了HIVE作为Hadoop数据仓库工具的工作原理,包括它如何利用MapReduce进行计算,与关系型数据库的区别,如存储系统、操作特性等。此外,还概述了MapReduce的三个主要阶段,并提到了HIVE的数据类型和CLI使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 零零散散的概念

1. 系统们:
(1)Hadoop生态系统实现了特别的计算模型 Mapreduce,其可以将计算任务(例如查询)分割为多个处理任务,分散到一群硬件机器上,再将这些任务的计算结果合并,得最终成果。HIVE会监控每一个任务,确保其完成。
(2)文件系统:Hadoop 分布式文件系统(HDFS)。每个数据块(block)会被冗余多份。
(3)HIVE 是基于 Hadoop的一个数据仓库工具,可将结构化的数据文件映射为一张数据库表,且提供了一系列工具来数据提取、转化、加载(ETL)。

2. HIVE 与关系型数据库的区别:
(1)存储系统:HIVE 使用 HDFS,关系型数据库使用本地的文件系统。
(2)HIVE 不支持记录级别的更新、插入或删除,但是可以通过查询生成新表或将查询结果导入到文件。
(3)关系型数据库为实时查询设计,HIVE为海量数据挖掘准备,故实时性较差。
(4)HIVE易扩展存储能力和计算能力。
(5)HIVE中没有键的概念,但是可以对表建立索引。
(6)传统数据库为写时模式,写入数据时检查数据模式;HIVE为读时模式,在查询时验证模式。

3. 关于 Mapreduce:
(1)Map:将输入<键值对>(e.g. key:offset,value:text)转换为0-var个<键值对>(e.g. key:word,value:count)输出;
(2)Sort,Shuffle:按键对Mapper输出的<键值对>排序,将相同键的<键值对>发放给Reducer.
(3)Reduce:将值的集合转化为一个值/另一个集合。

2. HIVE 工作原理

接收一条SQL之后:

Stepscontent
词法分析+语法分析将SQL语句解析为抽象语法树
语义分析从 Metastore获取元数据信息,验证SQL语句中的表名、列名、数据类型
逻辑计划生成生成逻辑计划得到算子树
逻辑计划优化对算子树优化,包括列剪枝、分区剪枝、谓词下推等
物理计划生成生成包含由 Mapreduce任务组成的有向无环图(DAG)的物理计划
物理计划执行将 DAG发送至 Hadoop集群进行执行

涉及的组件为:

Componentsdescribe
元存储 Metastore存储表的描述信息,任一个适用JDBC的数据库均可作为元存储
Driver控制HQL生命周期,包含 Query Compiler、Execution engine
Query Compiler执行上表步骤,将HQL编译为DAG
Execution engine执行 DAG
Hive Server提供 JDBC远程服务接口等
客户端提供命令行接口(HIVE CLI等)

3. HIVE CLI

命令行参数如下:

Parametersdescribe
-d<key=value>将 value赋值给 key
–database< databasename>指定所用数据库
-e< SQL>执行 SQL语句
-f< filename>执行文件中的SQL
-S静音模式,在输出中去掉无关信息
-H帮助信息,以上用 hive-H均可查看。

4. 数据类型

(1)基本数据类型如下:

typetypetype
TINYINTSMALINTINT
BIGINTBOOLEANFLOAT
DOUBLESTRINGTIMESTAMP
BINARY

相近类型可隐式转换,否则可用 cast(var AS type)。

(2)复杂数据类型与调用格式:

typedescribeexampleDDLcite
STRUCTlike “object”STRUCT(“C++”,“PY”)STRUCT< 1st:STRING,2nd:STRING>col.2nd
MAP<键值对>元组MAP(“C++”,1,“PY”,2)MAP< STRING,INT>col[“PY”]
ARRAY相同类型变量集合ARRAY(“C++”,“PY”)ARRAY< STRING>col[1]
  • STRUCT可以混合多种不同的数据类型,但是结构一经定义,字段位置不可变。MAP中的<键值对>是无序的;ARRAY中的变量是有序的。
  • 在JOSN中MAP与STRUCT实际上一样。

5. 文本文件数据编码

为了避免逗号或制表符出现在文本中的情况,换种方式分隔文本文件。

sepdescribecode in “CREATE TABLE”
\n分隔记录(行)TERMINATED BY ‘\n’
^A分隔字段(列)TERMINATED BY ‘\001’
^B分隔元素TERMINATED BY ‘002’
^C分隔 MAP中的键和值TERMINATED BY ‘003’

编码举例:

CREATE TABLE employees(
  name         STRING,
  salary       FLOAT,
  subordinates ARRAY<STRING>
  deductions   MAP<STRING,FLOAT>
  address      STRUCT<street:STRING,city:STRING>
)
ROW FORMAT LIMITED
LINES TERMINATED BY '\n'
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\001'

下期预告:数据定义(DDL)

参考资料

  • Hive编程指南[O’REILLY],人民邮电出版社
  • Hive编程技术与应用,中国水利水电出版社
  • JD_DYNAMIC 课程笔记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值