Skip to content

认识Apache Paimon

Paimon是什么?这个问题困扰我良久,郁郁不得其解。

随着我不断尝试、重复思考,直到完全跑通了入门案例才终于有种豁然开朗的感觉(这感觉真好),感叹Paimon未来大有可为。

后续我将出一个系列教程,为大家逐步讲解Paimon的用法,带你轻松入门。本文则是Paimon系列教程的第一篇,为大家介绍什么是Paimon。

什么是Paimon

首先我们来看看Paimon的前世今生吧。

Paimon原名是Flink Table Store(简称FTS),最初是Flink社区孵化的一个子项目,该项目的本意是想提供一个 Flink 完全内置的存储,解决实时、近实时、Queue、Table Format 的所有问题,结合 Flink + 这个内置存储,提供 Materialized View 的自动流处理,直接提供查询服务,打造一个完整的 Streaming DB。好事多磨,经过长达近2年的打磨,最终形成了湖 + LSM的方案,并于2023年3月12日进入ASF孵化器,才正式更名为Apache Paimon。

简而言之,Apache Paimon是一种流批统一的湖存储格式,支持高吞吐的写入和低延迟的查询。

Paimon的核心能力

  • 基于HDFS或者对象存储构建低成本的轻量级数据湖存储服务。

  • 支持在流模式与批模式下读写大规模数据集。

  • 支持分钟级到秒级数据新鲜度的批查询和OLAP查询。

  • 支持消费与产生增量数据,可作为传统数仓与流式数仓的各级存储。

  • 支持预聚合数据,降低存储成本与下游计算压力。

  • 支持历史版本回溯。

  • 支持高效的数据过滤。

  • 支持表结构变更。

基于Paimon的优秀能力,Paimon有望成为未来流数据湖平台架构的最佳选择。

Paimon支持的文件系统

  • 本地文件系统

使用本地文件系统可以很方便地上手体验Paimon,适合学习阶段。具体配置如下:

sql
create catalog my_catalog with (
 'type'='paimon',
 'warehouse'='file:/home/yuma/paimon'  # 此处可以用绝对路径,避免找不到文件
);
  • HDFS

使用HDFS文件系统则需要有部署Hadoop,有Hadoop使用经验的同学会更容易上手。具体配置如下:

sql
create catalog my_catalog with (
  'type'='paimon',
  'warehouse' = 'hdfs://<namenode>:<port>/<path>'
);
  • OSS

OSS是阿里云的对象存储服务,使用OSS文件系统则需要在阿里云的OSS服务,学习阶段可能会产生一点点费用(基本可以忽略)。该方式对于很多生产级用户应该是首选。具体配置如下:

sql
create catalog my_catalog with (
  'type'='paimon',
  'warehouse' = 'oss://<bucket>/<path>',
  'fs.oss.endpoint' = 'oss-cn-hangzhou.aliyuncs.com',
  'fs.oss.accessKeyId' = 'xxx',
  'fs.oss.accessKeySecret' = 'yyy'
)
  • S3

S3是亚马逊的对象存储服务,类似于OSS。具体配置如下:

sql
create catalog my_catalog with (
  'type'='paimon',
  'warehouse' = 's3://<bucket>/<path>',
  's3.endpoint' = 'your-endpoint-hostname',
  's3.access-key' = 'xxx',
  's3.secret-key' = 'yyy'
)

Paimon支持的计算引擎

  • Flink
  • Spark
  • Doris
  • Hive
  • StarRocks
  • Trino
  • Presto
  • ……

Paimon几乎与常见的计算引擎都有着良好的集成度。一份数据,我们可以使用任何我们熟悉的引擎来完成计算,岂不乐哉。

进阶

Paimon作为一种流批统一的湖存储格式,正在被越来越多的人认可。想要学习大数据开发相关内容的同学可以行动起来了。想要了解更多有关Paimon的内容,可以关注:遇码,回复Paimon,获取官方文档。

遇码MeetCoding 开源技术社区