数据湖学习笔记

数据湖的理念:
1、能够存储海量的原始数据
结构化数据
半结构化数据
非结构化数据
二进制数据(图片等)
2、能够支持任意的数据格式
底层存储:S3、OSS、HDFS,Parquet、Avro、Orc
数据缓存加速
轻量级索引
3、有较好的分析和处理能力
多种数据源接入、数据连接、Schema管理、权限管理,
批处理、流处理、交互式分析、机器学习

=============================

Hudi特性:廉价存储、table schema、acid语义保证,多版本保证、支持流批读写
不需强绑定支持spark,python接口支持、对flink的支持没那么好
iceberg支持多种引擎但功能不完善,curd支持不够好

==================================

Apache Hudi核心概念介绍

  1. 有序的时间轴元数据
  2. 分层布局的数据文件
  3. 索引


hudi存储类型:
COW模式:copy on write写时复制,读写分离思想
要写,先复制一份文件出来,在复制出来的文件上增加,读还是读原文件。
MOR模式: merge on read读时合并,读之前要先进行合并。
写在parqure格式,把新来的数据写在一个log文件里,读时要把两个文件的结果合并起来

从湖里查询的三种查询:
读优化:只查询指定的commit之前限定范围的最新数据,只能看到列式格式base文件中(parquet)的最新数据

增量:数据是不断增加的,像管理git一样,有很多版本数据,有很多commit,数据版本的增量,hudi是清楚的。可以查到最新写入到hudi表里的数据。

快照:每隔一段时间,我们可手动对当前数据做快照操作,记录当前数据状态与版本。可以快速获取快照数据。使用快照时,可查到指定commit以后的最新的数据

index:索引
数据存储在底层文件系统,要快速从文件系统里找到数据文件,就需要这种索引。
data file:parquet列式存储,也支持avro行式存储

timeline metadata时间轴,
git commit增量提交,会形成新的代码版本,串起来就是一个timeline时间轴,对于数据湖的好处是可以做数据回溯,用增量的方式把数据版本管理了起来。

查询引擎:

hive、spark、presto、flink(未完善)

Update(Upsert)/Delete记录:Hudi使用细粒度的文件/记录级别索引来支持update和delete记录,同时还提供写操作的事务保证。查询会处理最后一个提交的快照来输出结果。
delete的方法是增加一条记录标记某记录要被删除;update方法是增加一条记录标记某记录要被删除,与另一条记录标记某记录要被insert。


变更流:Hudi可以从给定的时间点获取给定表中已updated、inserted、deleted的所有记录的增量流,成为一种新的查询类别。可把Hudi当kafka用。
 

Hudi表设计--时间
Arrival time:数据到达Hudi的时间
commit time:提交时间
Event time:record事件时间
例:Flink去统计某接口每分钟调用失败日志的个数。这时就要用Event time。

类别:到达flink时间、数据处理时间、事件时间


数据文件
如果使用大数据方案,就会存在hdfs中,
FileManage
partition分区,对应hdfs目录
数据分两类,parquet数据文件,.hoodie中存放状态文件记录

hoodie key唯一字段加分区联合当作数据唯一键。

索引
布隆过滤器:

存储格式
读优化的列存格式 ROFormat,缺省Parquet
写优化的行存格式 WOFormat,缺省Avro


Apache Hudi的特性和功能
Apache Hudi的存储格式和查询类型 
基于Hudi构建企业级应用场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值