分区
-
静态分区
内存将划分为多个区域,每个区域对应一个分区,当程序访问内存时系统将为其分配一个固定大小的分区;
优点:简单易于管理
缺点:浪费资源,内存碎片化积多
-
动态分区
内存会划分为不同大小的分区,程序访问时自动分配合适大小的分区;
优点:灵活,空间最大化;
缺点:管理复杂,需要时间匹配合适的分区,时间延迟;
内外表区别
内部表
- 存储:数据库管理系统内部的表,数据和表结构都在数据库中;
- 访问:直接通过SQL工作;
- 删除:元数据,原始数据
- 建议:测试
外部表
- 存储:数据库管理系统之外的表,数据通常存储再外部文件:
- 访问:需要外部表定义才可以访问;
- 删除:元数据
- 建议:生产环境
HiveSQL执行流程(==>)
查询解析 | 查询优化 | 元数据查询 | 任务分配 | 任务执行 | 返回结果 |
HiveSQL中小文件处理
处理hiveSQL底层原理MR,小文件在于map阶段将数据划分若干分,Reduce合并输出的小文件;
缺点:小文件过多浪费资源,降低效率
解决:设定条件,按照任务输出文件大小的平均值作为阈值,若大于这个阈值将独立创建一个文件继续工作;
开窗函数
- 聚合函数
sum求和 | avg平均值 | count计数 | max最大 | min最小 |
- 分析函数
lead | 下一条字段数据 |
lag | 上一条字段数据 |
first_value | 第一条字字段数据 |
last | 最后一条字段数据 |
- 顺序函数
rank | 不连续可跳 |
dense_rank | 不连续不跳 |
row_number | 连续不跳 |
Hive4个by
- order by 全局排序
- sort by 排序
- distribute by 分区
- cluster by 分区字段名和排序字段名相同进行简化
hive文件格式和压缩
-
Hive 文件格式
-
文本文件格式:Hive 支持基本的文本文件格式,如 CSV、TSV 等。这些格式易于查看和编辑,但不适合大规模数据处理,因为它们没有压缩和列式存储的优势。
-
序列文件格式:序列文件是一种二进制文件格式,可以提高数据的读写效率。它支持数据压缩,适合大规模数据的存储和处理。
-
ORC 文件格式(Optimized Row Columnar):ORC 是一种列式存储格式,可以提供更好的查询性能和压缩比率。它适用于大型数据集和复杂查询。
-
Parquet 文件格式:Parquet 也是一种列式存储格式,与 ORC 类似,可以提供高性能查询和压缩优势。Parquet 格式通常用于数据仓库和大数据分析场景。
-
Hive 压缩方式
-
Snappy 压缩:Snappy 是一种快速压缩/解压缩算法,可以提供较快的压缩速度和相对较好的压缩比率。在 Hive 中,Snappy 压缩常用于中等大小的数据集。
-
Gzip 压缩:Gzip 是一种通用的压缩算法,在 Hive 中也可以使用。Gzip 压缩率较高,但解压缩速度较慢,适合对数据进行长期存档。
-
LZO 压缩:LZO 是一种较快的压缩算法,可以提供高速的压缩和解压缩性能。LZO 压缩在 Hive 中可以用于需要快速数据访问的场景。
数据倾斜
- Group by
原因:一个key值或者多个key值对应的数据量超过了其他key值对应的数据,导致大量的key值数据在reduce阶段聚合,该reduce所需要的时间高于其他reduce任务时间,产生数据倾斜;
解决:
- map-side :在map阶段部分聚合操作再执行后续任务;
- Skey-groupby:整个业务执行两次MR任务,第一个MR任务通过随机数先聚合;第二个MR通过指定的字段进行处理;
- JOIN
原因:在关联表的时候字段分布不均匀,导致数据倾斜因素
解决:map-join 只有map阶段没有reduce阶段;
拉链表意义以及用途
拉链可以理解为数据模型,防止海量数据中对其无休止的存储,浪费极大空间;
优点:可以满足获取历史数据状态并减少空间浪费
用法:增加两个字段StartTime和EndTime,如:某App登录系统,后台记录用户的登录信息,采用拉链式,一个用户共两条数据来记录,第一条记录历史数据,第二条记录当日的数据。
标签:数仓,存储,1.1,压缩,离线,Hive,文件格式,数据,分区 From: https://blog.csdn.net/2201_75311251/article/details/137125324