大数据学习之Hive01

本文介绍了数据仓库的基本概念,如数据仓库与数据库的区别,重点阐述了Hive的起源、作为Hadoop数据仓库解决方案的作用,以及其架构设计和核心应用。涵盖了Hive的数据模型、数据类型、文件格式、压缩格式以及数据操作分类,包括DDL、DML和DQL。

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

一.数据仓库

1.定义

        英文名:Data Warehouse 简称DW

        面向分析的存储系统,其特点有:面向主题,集成,不可修改,反映历史变化.

2.数据仓库和数据库的对比

        主要联系:1.二者都是用来存储数据的

                        2.数据仓库是数据库的衍生及应用

                        3.二者存在数据交互,你中有我,我中有你

        主要区别:1.数据库面向事务,数据仓库面向主题

                        2.数据库实时性强,吞吐量小但空间有限

                        3.数据仓库吞吐量大,但实时性弱,空间巨大

                        4.数据库尽量避免冗余,数据仓库有意引入冗余

二.Hive

1.产生背景

        1.1为了让非程序员便捷使用大数据

        1.2降低程序员处理大数据的难度和成本

        1.3基于hadoop的数据仓库应用广泛

        1.4FaceBook强大的商业需求和商业化运作

2.定义

        Hive是建立在hadoop上的数据仓库的基础架构和解决方案

3.作用

        提供了数据仓库的构建和完整的解决方案

4.意义

        基于hadoop解决了企业数据仓库构建的核心问题,证明了hadoop平台的强大,降低了hadoop的使用门槛

5.Hive在hadoop生态圈的地位

                

 

 三.Hive的架构设计

1.基本使用

        hive        进入hive cli

        show databases        查看所有数据库

        create database        创建数据库

        use (database name)        使用数据库

        show tables        查看数据库中所有表

        ......

2.架构设计

        

注意:在2.2版本以后,去掉了HWI模块,HiveCLI模式也采用beeline链接

3.运行流程

        

 四.Hive基础应用

        1.基础概念

                1.1数据模型

        

                1.2数据类型

                        1.2.1数值型

类型

说明

TINYINT

1-byte signed integer

from -128 to 127

SMALLINT

2-byte signed integer

from -32,768 to 32,767

INT

INTEGER

4-byte signed integer

from -2,147,483,648 to 2,147,483,647

BIGINT

8-byte signed integer

from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

FLOAT

4-byte single precision floating point number

DOUBLE

8-byte double precision floating point number

PRECISION 

DECIMAL

Decimal datatype was introduced in Hive0.11.0

(HIVE-2693) and revised in Hive 0.13.0 (HIVE-3976)

 

                        1.2.2日期类型

        

类型

说明

TIMESTAMP

UNIX时间戳和可选的纳秒精度

DATE

描述特定的年/月/日,格式为YYYY-MM-DD

 

                        1.2.3字符串

        

类型

说明

string

最常用的字符串格式,等同于java String

varchar

变长字符串,hive用的较多,最长为65535

char

定长字符串,比varchar更多一些,一般不要超过255个字符

 

                        1.2.4布尔类型

        

类型

说明

boolean

等同于java的boolean用的很少

 

                        1.2.5字节数组

        

类型

说明

binary

字节数组类型,可以存储任意类型的数据用的很少

 

                        1.2.6复杂数据类型

        

数据类型

描述

字面语法示例

STRUCT

和C语言中的struct或者对象类似,都可以通过符号访问元素内容。例如如果某个列的数据类型是STRUCT{first STRING, lastdt STRING},那么第1个元素可以通过字段名.first来引用

struct(

‘John’,

‘Doe’)

MAP

MAP是一组键-值对元组集合,使用数组表示法(例如[‘key’])可以访问元素。例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取值’Doe’

map(‘first’, ‘John’,

‘last’,

‘Doe’)

ARRAY

数组是一组具有相同类型的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第1个元素可以通过数组名[0]进行引用

ARRAY(

‘John’,

‘Doe’)

 

 1.3Hive数据文件格式和压缩格式

        1.3.1文件格式

面向行/列类型

类型名称

是否可切割计算

优点

缺点

适用场景

面向行

文本文件格式(.txt)

可以

查看、编辑简单

无压缩占空间大、传输压力大、数据解析开销大

学习练习使用

面向行

SequenceFile序列文件格式(.seq)

可以

自支持、二进制kv存储、支持行和块压缩

本地查看不方便:小文件合并成kv结构后不易查看内部数据

生产环境使用、map输出的默认文件格式

面向列

rcfile文件格式(.rc)

可以

数据加载快、查询快、空间利用率高、高负载能力

每一项都不是最高

学习、生产均可

面向列

orcfile文件格式(.orc)

可以

兼具rcfile优点、进一步提高了读取、存储效率、新数据类型的支持

每一项都不是最高

学习、生产均可

        1.3.2压缩格式

可切分性

类型名称

是否原生支持

优点

缺点

适用场景

可切分

lzo(.lzo)

压缩/解压速度快

合理的压缩率

压缩率比gzip低

不原生、需要native安装

单个文件越大,lzo优点越越明显。压缩完成后>=200M为宜

可切分

bzip2(.bz2)

高压缩率超过gzip

原生支持、不需要native安装、用linux bzip可解压操作

压缩/解压速率慢

处理速度要求不高、要求高压缩率(冷数据处理经常使用)

不可切分

gzip(.gz)

压缩/解压速度快

原生/native都支持使用方便

不可切分、对CPU要求较高

压缩完成后<=130M的文件适宜

不可切分

snappy(.snappy)

高速压缩/解压速度

合理的压缩率

压缩率比gzip低

不原生、需要native安装

适合作为map->reduce或是job数据流的中间数据传输格式

1.4数据操作分类

                

        2.HiveSQL

                2.1DDL

                        元数据:描述数据的数据

                        内表:元数据和数据本身均被Hive管理,删除表全部会删除

                        外表:元数据被Hive管理,数据本身存在hdfs,删除表只删除元数据,不影响数据本身

                2.2DML

                        将本地数据文件加载到表中:load data local inpath ....overwrite into table ....                         partition();

                        将hdfs目录下的文件加载到表中:load data inpath ...overwrite into table...

                        将查询结果插入表中:insert overwrite table ... select ...

                        动态分区注意设置非严格模式

                2.3DQL

                         select * from ...         查询所有

                        select * from ... where          根据条件查询所有

                        还可以加入limit,设置升序降序

                        join查询分为  inner join        left outer join        right outer join        full outer join

                        union分为  union all将所有数据叠加,不去重

                                          union将所有数据叠加且去重

        3.Hive系统函数

                

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值