「DuckDB-Paimon实操」6分钟上手,数据湖分析快人一步

简介: DuckDB-paimon 是 PolarDB 团队开发的 DuckDB 扩展,支持直接查询 Apache Paimon 数据湖表,无需 ETL 或 Flink/Spark 集群。具备 OSS 远程存储、列裁剪下推、Catalog 挂载及跨格式联邦查询能力,实现秒级即席分析与轻量数据验证。

DuckDB-paimon 是由 PolarDB 团队开发的一款 DuckDB 扩展插件,让 DuckDB 能够直接读取和查询 Apache Paimon 格式的数据湖表,无需任何 ETL 搬运,无需 Flink/Spark 集群,打开 DuckDB Shell 即可对 Paimon 表执行 SQL 分析。

技术交流钉群:164165020808

DuckDB-paimon核心能力

直接读取 Paimon 表

无需任何中间转换,直接通过 SQL 查询 Paimon 表数据:


-- 通过完整路径读取
SELECT * FROM paimon_scan('./data/testdb.db/testtbl');
-- 通过 warehouse / database / table 三段式读取
SELECT * FROM paimon_scan('/warehouse', 'mydb', 'orders');


远程 OSS 存储支持

通过 DuckDB 的 Secret 机制,安全配置阿里云 OSS 访问凭证,直接查询存储在 OSS 上的 Paimon 数据湖:


-- 配置 OSS 访问凭证
CREATE SECRET paimon_oss (
TYPE paimon,
key_id 'your-access-key-id',
secret 'your-access-key-secret',
endpoint 'oss-cn-hangzhou.aliyuncs.com'
);
-- 直接查询 OSS 上的 Paimon 表
SELECT COUNT(*), region
FROM paimon_scan('oss://my-bucket/warehouse', 'sales_db', 'orders')
GROUP BY region
ORDER BY COUNT(*) DESC;


Projection Pushdown(列裁剪下推)

查询时只读取 SQL 中实际用到的列,大幅减少 I/O 开销,在宽表场景下效果尤为显著:


-- 只会读取 order_id 和 amount 两列的数据文件,其余列不会被读取
SELECT order_id, amount FROM paimon_scan('oss://...', 'db', 'orders');


作为 Catalog 挂载(ATTACH)

将 Paimon warehouse 作为一个完整的 Catalog 挂载到 DuckDB,像操作本地数据库一样浏览 Paimon 的 Schema 和表结构:


ATTACH 'oss://my-bucket/warehouse' AS paimon_lake (TYPE paimon);

SHOW ALL TABLES IN paimon_lake;
DESCRIBE paimon_lake.sales_db.orders;


DuckDB-paimon核心能力


实时湖仓的轻量即席查询

数据由 Flink 实时写入 Paimon,分析师用 DuckDB + Duckdb-paimon 直接在 OSS 上做即席(ad-hoc)查询,无需启动任何计算集群,查询延迟从分钟级降至秒级。

数据验证与质量检查

在 CI/CD 流水线中,用 DuckDB 对 Paimon 表做数据质量断言,验证 Flink 作业的输出结果是否符合预期,轻量、快速、无依赖。

数据探索与调试

数据工程师在开发 Flink 作业时,随时用 DuckDB Shell 查看 Paimon 表的当前状态,快速定位数据问题,效率远超启动 Flink SQL Client。

跨格式数据联邦查询

DuckDB 天然支持查询 Parquet、CSV、JSON、Iceberg 等多种格式,结合 Duckdb-paimon,可以将 Paimon 表与其他数据源做联邦 JOIN,无需数据搬运:


-- Paimon 订单表 JOIN 本地 CSV 维表
SELECT o.order_id, o.amount, c.customer_name
FROM paimon_scan('oss://...', 'db', 'orders') o
JOIN read_csv('customers.csv') c ON o.customer_id = c.id;


快速上手


构建


git clone --recurse-submodules https://github.com/polardb/duckdb-paimon.git
cd duckdb-paimon
GEN=ninja make

--recurse-submodules 会同时拉取 DuckDB 和 paimon-cpp 子模块,是构建所必需的。


运行


./build/release/duckdb


查询本地 Paimon 表


SELECT * FROM paimon_scan('./data/testdb.db/testtbl');


查询 OSS 上的 Paimon 表


CREATE SECRET my_oss (
TYPE paimon,
key_id 'your-ak',
secret 'your-sk',
endpoint 'oss-cn-hangzhou.aliyuncs.com'
);
SELECT * FROM paimon_scan('oss://your-bucket/warehouse', 'your_db', 'your_table');


目录
相关文章
|
6月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB开源新作:DuckDB-paimon,助力企业构建面向AI的多模数据底座
DuckDB-paimon 是 PolarDB 团队开发的 DuckDB 插件,支持直接查询 Apache Paimon 数据湖表(本地/OSS),无需 Flink/Spark 集群。基于 paimon-cpp 原生 C++ 实现,具备列裁剪、多线程扫描、Secret 安全凭证等特性,实现秒级轻量分析。
860 9
|
Kubernetes 网络协议 调度
聊聊k8s中的hostport和NodePort
让服务基于节点暴露端口,大家最先想到的应该都是 nodeport 这种 service,他可以非常方便的为pod代理外部流量,那么 hostport 是什么呢?他和 nodeport 的区别是什么,今天我们来聊聊这个比较小众的 hostport。
8038 0
聊聊k8s中的hostport和NodePort
|
JavaScript 前端开发 Java
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
springboot整合minio+vue实现大文件分片上传,断点续传(复制可用,包含minio工具类)
4585 2
|
2月前
|
消息中间件 存储 Kafka
StarRocks x Fluss x Paimon 湖流一体方案:构建秒级响应、湖流一体的实时数据引擎
StarRocks x Fluss x Paimon 湖流一体方案通过将 Apache Fluss(面向分析场景的实时流存储)与 Apache Paimon(高性能湖格式表)深度融合,以 StarRocks 作为统一查询入口,构建了一套具备秒级新鲜度、十倍成本降低、一份数据一次查询的全新实时数据引擎。本文将介绍该方案的核心架构、技术优势、查询模式以及在阿里云 EMR Serverless StarRocks 上的产品化落地。
278 0
|
5月前
|
编解码 数据可视化 前端开发
前端组件库——DataV知识点大全(二)
教程来源 https://www.xbivx.cn DataV提供40+高质量组件,涵盖边框(13种SVG动画边框)、装饰、数字翻牌器、滚动表格、水位图、锥形柱图、飞线图及全屏容器等,支持高度自定义与响应式适配,助力快速构建专业数据大屏。
|
存储 SQL 对象存储
StarRocks 3.5 新特性解读:Snapshot 快照恢复、大导入性能全面升级、分区管理更智能
自 2023 年 4 月推出存算分离架构以来,StarRocks 在性能优化和功能迭代方面不断加速,以持续满足企业日益增长的数据分析需求。最新发布的 StarRocks 3.5 版本再次聚焦用户痛点,带来了一系列实用的新特性:新增的 Snapshot 快照恢复机制有效提升数据安全与灾备能力,大规模数据导入流程的优化持续提升易用性与稳定性。
|
存储 分布式数据库 Apache
小米基于 Apache Paimon 的流式湖仓实践
本文整理自Flink Forward Asia 2024流式湖仓专场分享,由计算平台软件研发工程师钟宇江主讲。内容涵盖三部分:1)背景介绍,分析当前实时湖仓架构(如Flink + Talos + Iceberg)的痛点,包括高成本、复杂性和存储冗余;2)基于Paimon构建近实时数据湖仓,介绍其LSM存储结构及应用场景,如Partial-Update和Streaming Upsert,显著降低计算和存储成本,简化架构;3)未来展望,探讨Paimon在流计算中的进一步应用及自动化维护服务的建设。
1143 0
小米基于 Apache Paimon 的流式湖仓实践
|
SQL 存储 NoSQL
贝壳找房基于Flink+Paimon进行全量数据实时分组排序的实践
本文投稿自贝壳家装数仓团队,在结合家装业务场景下所探索出的一种基于 Flink+Paimon 的排序方案。这种方案可以在实时环境对全量数据进行准确的分组排序,同时减少对内存资源的消耗。在这一方案中,引入了“事件时间分段”的概念,以避免 Flink State 中冗余数据对排序结果的干扰,在保证排序结果准确性的同时,减少了对内存的消耗。并且基于数据湖组件 Paimon 的聚合模型和 Audit Log 数据在数据湖内构建了拉链表,为排序结果提供了灵活的历史数据基础。
29462 8
贝壳找房基于Flink+Paimon进行全量数据实时分组排序的实践
|
存储 JSON 数据格式
解密 parquet 文件,以及如何用 Python 去处理它(一)
解密 parquet 文件,以及如何用 Python 去处理它
3602 1
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
4292 1

热门文章

最新文章