参考链接:
paimon 作为数据湖存储,可在多种场景下替代现有解决方案,提供多功能的统一存储:
insert overwrite
为满足多功能的统一存储需求,paimon 提供的表和传统表有所区别:
paimon 表支持多种数据读写方式:
同时 paimon 也支持多种底层存储,包括文件系统/对象存储(如 hdfs/s3)。
支持引擎如下:
paimon 表数据以列式存储,默认是 parquet,支持 orc、avro
参考链接:
文件目录
快照(Snapshot)
清单文件(Manifest)
数据文件
与 Hive 分区兼容,通过日期、城市、部门等字段划分数据,显著提升查询效率
参考:
当有多个任务在像同一张表写入数据时,如何保证数据正确性。
paimon 支持乐观锁支持多任务同时写入:
每个任务按照自己逻辑运行,提交时基于当前最新快照生成新的快照。因为多任务同时写入,提交时存在 2 种失败情况:
paimon 中快照 id 是唯一的,只要任务能将快照写入文件系统中,即成功。
paimon 提交快照时,使用文件系统的 rename
操作。hdfs 确保 rename
操作的事务性和原子性,而对象存储无法保证,需要在 hive 或 jdbc metastore 中启用 lock.enabled
选项。
文件删除发生在 compaction
阶段,当多个任务同时写入时并同时开启 compaction,任务之间会不断触发 file 冲突,造成任务不停失败、触发 failover 重启。
在多个任务同时写入时,需确保只有一个任务开启 compaction。其余任务设置为 'write-only' = 'true'
。
参考链接:
类型
参考链接:
paimon 支持多种表结构
带主键的表是 Paimon 中最常用的表类型之一。主键由一组列组成,确保每条记录的唯一性。Paimon 通过在每个桶内对主键进行排序来强制数据排序,从而支持流式更新和流式变更日志读取。
无主键的表适用于追加数据的场景。与带主键的表不同,无主键的表不能直接接收变更日志(无法接收 changelog),也不能通过流式 upsert 更新数据(不支持 update)。它只能接收追加数据。
参考链接:
参考链接: