对 Hive 数仓表进行高效小文件合并 | 学习笔记

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 快速学习对 Hive 数仓表进行高效小文件合并。

开发者学堂课程【数据湖 JindoFS + OSS 实操干货36讲对 Hive 数仓表进行高效小文件合并】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/833/detail/13982


Hive 数仓表进行高效小文件合并

 

内容介绍

一、背景介绍

二、主要功能


一、背景介绍

1)小文件如何产生

l  动态分区插入数据,产生大的小文件,从而导致 map 数剧增。

l  reduce 数量越多,小文件也越多(r educe 的个数和输出文件是对应的)

l  数据源本身就包含大量的小文件。

2)小文件带来的问题

l  小文件会开很多 map, 一个 map 开一个 JVM 去执行,所以这些任务的初始化,启动,执行会浪费大量的资源,严重影响性能。

l  小文件会给底层文件系统带来很大压力,如在在 HDFS 中,每个小文件对象约占150byte,如果小文件过多会占用大量内存。这样 NameNode 内存容量严重制约了集群的扩展

3)小文件解决方案

l  从小文件产生的途经就可以从源头上控制小文件数量

l  使用 Sequencefile 作 为表存储格式,不要用 textfile,在一定程度上可以减少小文件。

l  减少 reduce 的 数量(可以使用参数进行控制)

l  少用动态分区,用时记得按 distribute by 分区。

l  对于已有的小文件,我们可以通过以下几种方案解决

l  通过参数进行调节,设置 map/reduce 端的相关参数。

l  重建表,建表时减少 reduce 数量。

l  使用 hadoop archive 命令把小文件进行归档。

 

二、主要功能

1JindoTable

l  JindoTable 提供表或分区级别的热度统计、存储分层和表文件优化的功能,常见命令如下:

l  -accessStat/-leastUseStat

l  -cache/-uncache/-archive/-unarchive/-archiveTable/-unarchiveTable/ -status

l  -optimize

l  -showTable/-showPartition/-listTables

l  -dumpmc

l  -moveTo

2Hive 数仓表小文件合并

l  Jindo table- -showTable/-showPartition -t  -p

l  显示表格或者分区的状态,如果表文件过小会提示文件过小

l  Jindo table - optimize  优化表存储层的数据组织

 

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
7月前
|
SQL 分布式计算 关系型数据库
基于云服务器的数仓搭建-hive/spark安装
本文介绍了在本地安装和配置MySQL、Hive及Spark的过程。主要内容包括: - **MySQL本地安装**:详细描述了内存占用情况及安装步骤,涉及安装脚本的编写与执行,以及连接MySQL的方法。 - **Hive安装**:涵盖了从上传压缩包到配置环境变量的全过程,并解释了如何将Hive元数据存储配置到MySQL中。 - **Hive与Spark集成**:说明了如何安装Spark并将其与Hive集成,确保Hive任务由Spark执行,同时解决了依赖冲突问题。 - **常见问题及解决方法**:列举了安装过程中可能遇到的问题及其解决方案,如内存配置不足、节点间通信问题等。
基于云服务器的数仓搭建-hive/spark安装
|
SQL 数据库 HIVE
hive数仓 ods层增量数据导入
根据业务需求,当表数据量超过10万条时采用增量数据导入,否则全量导入。增量导入基于`create_date`和`modify_date`字段进行,并确保时间字段已建立索引以提升查询效率。避免在索引字段上执行函数操作。创建增量表和全量表,并按日期进行分区。首次导入全量数据,后续每日新增或变更数据保存在增量表中,通过全量表与增量表的合并保持数据一致性。
470 12
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
476 1
|
存储 数据挖掘 大数据
大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
数据仓库建模是组织和设计数据以支持数据分析的过程,包括ER模型和维度建模。ER模型通过实体和关系描述数据结构,遵循三范式减少冗余。维度建模,特别是Kimball方法,用于数据仓库设计,便于分析和报告。事实表存储业务度量,如销售数据,分为累积、快照、事务和周期性快照类型。维度表提供描述性信息,如时间、产品、地点和客户详情。数仓通常分层为ODS(源数据)、DWD(明细数据)、DIM(公共维度)、DWS(数据汇总)和ADS(应用数据),以优化数据管理、质量、查询性能和适应性。
4848 4
|
SQL 数据采集 分布式计算
Hive 数仓及数仓设计方案
数仓整合企业数据,提供统一出口,用于数据治理。其特点包括面向主题集成和主要支持查询操作。数仓设计涉及需求分析(如咨询老板、运营人员和行业专家)、确定主题指标(如电商的转化率)、数据标准设定、规模与成本计算、技术选型(如Hadoop生态组件)以及数据采集和操作。设计流程涵盖从理解需求到实施SQL函数和存储过程的全过程。
433 3
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
387 0
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
647 0
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
1418 0
|
存储 关系型数据库 MySQL
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(2)
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
228 0
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(2)
|
8天前
|
存储 人工智能 OLAP
AI Agent越用越笨?阿里云AnalyticDB「AI上下文工程」一招破解!
AI 上下文工程是管理大模型输入信息的系统化框架,解决提示工程中的幻觉、上下文溢出与信息冲突等问题。通过上下文的采集、存储、加工与调度,提升AI推理准确性与交互体验。AnalyticDB PostgreSQL 版提供增强 RAG、长记忆、Supabase 等能力,助力企业构建高效、稳定的 AI 应用。