![](https://img-blog.csdnimg.cn/e85fbe78ea9c4f538f55aa48da344243.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Hudi
文章平均质量分 85
数据湖平台之一
Alienware^
喜欢专研Java,Scala,Python,数据库,以及大数据框架系列知识。希望通过不断的学习,记录自己的点点滴滴。
展开
-
Hudi集成Spark(二)Spark SQL方式
Catalog:可以和Spark或者Flink中做一个共享,共享之后,计算引擎才可以去读取计算Hive引擎。原创 2023-01-11 22:36:35 · 1205 阅读 · 0 评论 -
Hudi集成Spark(一)Spark Shell方式
查找以前提交中相同的_hoodie_record_keys 在该表的_hoodie_commit_time、rider、driver 字段中的变化。我们希望类似 hive 的 "insert overwrite "操作,以忽略现有数据,只用提供的新数据创建一个提交。查询特定时间点的数据,可以将 endTime 指向特定时间,beginTime 指向 000(表示最早提交时间)新增数据,生成一些数据,将其加载到 DataFrame 中,然后将 DataFrame 写入 Hudi 表。原创 2023-01-11 16:15:32 · 842 阅读 · 0 评论 -
Hudi的核心概念 —— 数据读
2)有 base file:走 copy on write upsert 流程,先读 log file 建 index,再读 base file,最后读 log file 写新的 base file。0.8.0 版本的 Hudi Flink writer 支持实时的增量订阅,可用于同步 CDC 数据,日常的数据同步 ETL pipeline。Flink 的 streaming 读做到了真正的流式读取,source 定期监控新增的改动文件,将读取任务下派给读 task。1)没有 base file。原创 2023-01-09 22:26:54 · 708 阅读 · 0 评论 -
Hudi的核心概念 —— 数据写 ★★★★★
通过对写流程的梳理可以了解到 Apache Hudi 相对于其他数据湖方案的核心优势:1)写入过程充分优化了文件存储的小文件问题,Copy On Write 写会一直将一个bucket (FileGroup)的 base 文件写到设定的阈值大小才会划分新的 bucket;Merge On Read 写在同一个 bucket 中,log file 也是一直append 直到大小超过设定的阈值 roll over。原创 2023-01-09 22:17:56 · 507 阅读 · 0 评论 -
Hudi的核心概念 —— 表类型(Table Types)
对每一个新批次写入都将创建相应数据文件的新版本(新的 FileSlice),新版本文件包括旧版本文件的记录以及来自传入批次的记录(全量最新)。对于写时复制(COW),它可以替代现有的 parquet 表(或相同基本文件类型的表),同时提供 upsert/delete 和其他写入方面的功能,可以理解为查询最新版本的 Parquet 数据文件。读取端将实时合并基本文件及其各自的增量日志文件。MOR 表中,包含列存的基本文件(.parquet)和行存的增量日志文件(基于行的 avro 格式,.log.*)。原创 2023-01-09 16:40:58 · 1068 阅读 · 0 评论 -
Hudi的核心概念 —— 索引(Index)
事实上,有范围裁剪功能的布隆索引是最佳的解决方案。从 index 的维护成本和写入性能的角度考虑,维护一个 global index 的难度更大,对写入性能的影响也更大,所以需要 non-global index。上图为例,白色是基本文件,黄色是更新数据,有了索引机制,可以做到:避免读取不需要的文件、避免更新不必要的文件、无需将更新数据与历史数据做分布式关联,只需要在 File Group 内做合并。全局索引:全局索引在全表的所有分区范围下强制要求键的唯一性,也就是确保对给定的键有且只有一个对应的记录。原创 2023-01-09 14:13:26 · 2047 阅读 · 0 评论 -
Hudi的核心概念 —— 文件布局(File Layout)
(1)元数据:.hoodie 目录对应着表的元数据信息,包括表的版本管理(Timeline)、归档目录(存放过时的 instant 也就是版本),一个 instant 记录了一次提交(commit)的行为、时间戳和状态,Hudi 以时间轴的形式维护了在数据集上执行的所有操作的元数据;(2)多个日志文件(.log.*),这些日志文件包含自生成基本文件以来对基本文件的插入/更新(COW 没有)(2)clean 操作:清除不使用的/旧的文件片以回收文件系统上的空间。Hudi 将一个表映射为如下文件结构。原创 2023-01-09 11:40:15 · 1320 阅读 · 0 评论 -
Hudi的核心概念 —— 时间轴(TimeLine)
上图中采用时间(小时)作为分区字段,从 10:00 开始陆续产生各种 commits,10:20 来了一条 9:00 的数据,根据 event time 该数据仍然可以落到 9:00 对应的分区,通过timeline 直接消费 10:00 (commit time)之后的增量更新(只消费有新 commits 的 group),那么这条延迟的数据仍然可以被消费到。就是一个时间线,它的每一个操作都记录在内,每一个时刻,你做了什么事情,对某一个时刻,记录一个时刻的数据。原创 2023-01-09 10:59:42 · 1022 阅读 · 0 评论 -
Hudi编译安装
(1)上传apache-maven-3.6.1-bin.tar.gz到/opt/software目录,并解压更名。修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。否则在使用DeltaStreamer工具向hudi表插入数据时,也会报Jetty的错误。将hudi-0.12.0.src.tgz上传到/opt/software,并解压。(1)修改setting.xml,指定为阿里仓库地址。1)新增repository加速依赖下载。2)修改依赖的组件版本。原创 2022-10-20 16:05:04 · 2453 阅读 · 0 评论 -
Hudi概述
Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发,同时保持数据的开源文件格式。Apache Hudi不仅非常适合于流工作负载,而且还允许创建高效的增量批处理管道。Apache Hudi可以轻松地在任何云存储平台上使用。原创 2022-10-19 14:22:18 · 409 阅读 · 0 评论