BigData大数据应用开发学习笔记(03)离线处理--数据仓库Hive

BigData大数据应用开发学习笔记(03)离线处理--数据仓库Hive

一.离线批处理特点

处理时间要求不高、数据量巨大、数据格式多样、占用计算存储资源多

MR作业,Spark作业,HSQL作业实现

数据源:流式数据、文件数据、数据库

数据采集:实时采集(Flume、第三方采集),批量采集(Flume、Sqoop、第三方ETL)

离线批处理引擎:HDFS,Yarn,MapReduce,Hive,Spark,Spark SQL

业务应用:数据集市,数据仓库(交互式分析),专题库

离线批处理常用组件:

HDFS: 分布式文件系统,为各种批处理引擎提供数据存储,可以存储各种文件格式数据。

YARN: 资源调度引擎,为各种批处理引擎提供资源调度能力。

MapReduce: 大数据批处理引擎,用于处理海量数据,但是处理速度较慢。

Hive: 大数据SQL批处理引擎,用于处理SQL类批处理作业,但是处理速度较慢。

Spark: 基于内存的数据处理引擎,适合海量数据,处理速度高效。

Spark SQL: Spark处理结构化数据的一个模块。

二.数据仓库Hive

1.Hive说明

Hive是基于Hadoop的数据仓库软件,可以查询和管理PB级别的分布式数据。

Hive特性:

灵活方便的ETL(Extract/Transform/Load)

支持MapReduce、Tez、Spark多种计算引擎

可直接访问HDFS文件以及HBASE

易用易编程

2.Hive的数据存储

数据库、内部表、桶、分区、外部表、倾斜数据、正常数据

Hive内部表和外部表的区别

CREATE/LOAD 内部表数据移到仓库目录,外部表数据位置不移动

DROP 内部表元数据和数据会被一起删除,外部表只删除元数据

命令:

desc formatted tablename; -- 查询表的类型

alter table tablename set tblproperties('EXTERNAL'='TRUE'); -- 修改内部表为外部表

alter table tablename set tblproperties('EXTERNAL'='FALSE'); -- 修改外部表为内部表

3.Hive内置函数

show functions; -- 查看系统函数

desc function upper; -- 查看函数的用法

desc function extended upper; -- 详细显示函数的用法

常用函数:

数学函数:round(),abs(),rand(),...

日期函数:to_date(),current_date(),...

字符串函数:trim(),length(),substr(),...

4.Hive自定义函数UDF

UDF(User-Defined-Function):用于接收单个数据行,并产生一个数据行作为输出。

UDAF(User-Defined Aggregation Function):用于接收多个数据行,并产生一个数据行作为输出。

UDTF(User-Defined Table-Generating Functions):用于接收单个数据行,并产生多个数据行作为输出。

UDF开发步骤:

继承org.apache.hadoop.hive.ql.exec.UDF

实现一个evaluate()方法,编写要实现的逻辑

打包并上传到HDFS

Hive创建临时函数

调用该函数

5.Hive调优:

数据倾斜:

数据倾斜指计算数据的时候,数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均计算速度,导致整个计算过程过慢。

容易造成数据倾斜的原因归纳为几点:

group by

distinct count (distinct xxx)

join

调优参数:

set hive.map.aggr=true; -- 在Map中会做部分聚集操作,效率更高但需要更多内存

set hive.groupby.skewindata=true; -- 生成的查询计划会有两个MRjob,可实现数据倾斜时负载均衡

map side join:

set hive.auto.convert.join=true; -- 当连接一个较小和较大表时,把较小的表直接放到内存中,然后再对较大的表进行Map操作。

并行执行:

每个查询会被Hive转化为多个阶段,当有些阶段关联性不大时,可以并行执行,减少整个任务的执行时间。

set hive.exec.parallel=true; -- 开启并行

set hive.exec.parallel.thread.number=8; -- 设置同一个SQL允许并行任务的最大线程数

6.HQL开发(Hive SQL)

(1).创建表

CREATE EXTERNAL TABLE IF NOT EXISTS tablename (

id INT Comment '编号',

name STRING Comment '姓名',

salary DOUBLE Comment '薪水金额',

deductions MAP<STRING, DOUBLE> Comment '缴税税种'

)

-- "DELIMITED FIELDS TERMINATED BY"指定列与列之间的分隔符为',',"MAP KEYS TERMINATED BY"指定MAP中健值的分隔符为'&'

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' MAP KEYS TERMINATED BY '&'

-- 指定表的存储格式为TEXTFILE

STORED AS TEXTFILE;

(2).数据加载

从本地加载数据到表

LOAD DATA LOCAL INPATH '/opt/hive_examples_data/employee_info.txt' OVERWRITE INTO TABLE employee_info;

从HDFS加载数据到表

LOAD DATA INPATH '/usr/hive_examples_data/employee_contract.txt' OVERWRITE INTO TABLE employee_contract;

(3).查询

一般查询:

SELECT a.name,

b.tel_phone,

b.email

FROM employees_info a

JOIN employees_contact b ON a.id = b.id

WHERE usd_flag='D';

将查询结果写到表中的某个分区中

INSERT OVERWRITE TABLE employees_info_extended PARTITION (entrytime = '2019')

SELECT a.id,

a.name,

b.tel_phone

FROM employees_info a

JOIN employees_contract b ON a.id = b.id

WHERE a.entrytime = '2019';

查询:

SELECT COUNT(*) FROM employees_contract;

SELECT a.name, b.tel_phone

FROM employees info a

JOIN employees contact b ON a.id = b.id

WHERE b.email like '%cn';

7.Hive数据仓库

数据集市(Data Mart)与数据仓库。

数据仓库分层:

ODS:原始数据层(Operational Data Store)

DWD:结构和粒度与原始表保持一致,简单清洗(Data Warehouse Detail)

DWS:以DWD为基础,进行轻度汇总(Data Warehouse Service)

ADS:为各种统计报表提供数据(Application Data Store)

分层的优点:

复杂问题简单化:将任务分解成多个步骤完成,每一层只处理单一的步骤,比较简单,方便定位。

减少重复开发:规范数据分层,通过中间层数据,减少最大的重复计算,增加一次计算结果的复用性。

隔离原始数据:避免数据异常或者数据敏感,使真实数据与统计数据解耦。

相关推荐
MiYi1240631 分钟前
2026 企业 AI 办公工具选型指南:从需求分析到任务交付的完整评估框架
大数据·人工智能
IT研究室1 小时前
最新大数据毕业设计选题推荐-基于大数据的全球地震数据分析与可视化-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·数据分析·spark·课程设计
data analyse 4561 小时前
数据合规的第三方SDK清单怎么管理?
大数据·人工智能
YangYang9YangYan1 小时前
2027 届秋招岗位对比|大数据本科,产品运营 vs 数字化管培投递策略
大数据·产品运营
卷毛迷你猪1 小时前
快速实验篇(B04) 热门品类 Top10 与加权排名
大数据·hive·hadoop
Omics Pro1 小时前
预测性虚拟细胞中显式机理算子
大数据·数据库·人工智能·python·算法·机器学习·自然语言处理
看浪的路人1 小时前
第5讲:Prompt 管理与版本追踪
大数据·数据库·elasticsearch
计算机源码社2 小时前
【大数据毕设项目】基于大数据与机器学习的北京市招标公告数据分析与可视化研究 面向智慧监管的北京市招标公告数据可视化分析系统
大数据·机器学习·信息可视化·数据挖掘·数据分析·毕业设计·课程设计
动恰客流统计10 小时前
景区客流统计怎么做?兼顾管控与运营的实施方案解析
大数据·前端·人工智能
weixin_4438830110 小时前
合规整改倒计时:高等级签名证书的应用场景
大数据·人工智能·法大大·法大大电子签·电子合同