使用 DuckLake 和 DuckDB 构建 S3 数据湖实战指南

news2025/6/7 17:29:42

本文介绍了由 DuckDBDuckLake 组成的轻量级数据湖方案,旨在解决传统数据湖(如Hadoop+Hive)元数据管理复杂、查询性能低及厂商锁定等问题。该方案为中小规模数据湖场景提供了简单、高性能且无厂商锁定的替代选择。

在这里插入图片描述

1. 什么是 DuckLake 和 DuckDB?

在现代数据架构中,数据湖(Data Lake)湖仓一体(Lakehouse) 已成为存储和管理大规模结构化与非结构化数据的核心方案。然而,传统的数据湖(如 Hadoop + Hive)往往存在元数据管理复杂、查询性能低、依赖特定厂商等问题。

DuckDB 是一个高性能的嵌入式分析数据库,支持 SQL 查询和向量化执行,特别适合本地和云环境下的数据分析。而 DuckLake 是一个基于 DuckDB 的轻量级表格式,它将元数据存储在 SQL 数据库(如 DuckDB)中,而实际数据则存储在开放格式(如 Parquet)的云存储(如 S3、GCS、Azure Blob Storage)上。

DuckLake 的核心优势:
✅ ​​简单易用​​:所有元数据管理通过 SQL 完成,无需复杂配置。
✅ ​​高性能​​:元数据操作极快,查询性能优异。
✅ ​​开放标准​​:数据存储在 Parquet 格式,元数据可移植。
✅ ​​ACID 事务支持​​:支持 schema 演进、时间旅行(Time Travel)等高级功能。

2. 环境准备:安装 DuckDB 并加载扩展

首先,确保已安装 DuckDB(官方下载地址)。然后,在 DuckDB 中加载必要的扩展以支持云存储和 DuckLake:

-- 安装并加载 AWS S3 支持
INSTALL aws;
LOAD aws;

-- 安装 HTTP 文件系统支持(可选,用于远程数据访问)
INSTALL httpfs;
LOAD httpfs;

-- 安装 Parquet 支持(用于读取/写入 Parquet 文件)
INSTALL parquet;
LOAD parquet;

-- 安装 DuckLake 扩展
INSTALL ducklake;
LOAD ducklake;

3. 配置 AWS 凭证

DuckDB 支持从环境变量或直接加载 AWS 凭证。推荐使用环境变量方式(更安全):

# 在终端设置 AWS 凭证(Linux/macOS)
export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export AWS_REGION="us-east-1"  # 替换为你的 S3 区域

或者在 DuckDB 中直接加载凭证:

-- 直接加载 AWS 凭证(不推荐生产环境使用)
CALL load_aws_credentials();

4. 创建 DuckLake 目录并连接 S3

DuckLake 使用 目录(Catalog) 管理表元数据。我们可以在 S3 上创建一个 DuckLake 目录:

-- 在 S3 上创建 DuckLake 目录
ATTACH 'ducklake:metadata.ducklake' (
  DATA_PATH 's3://your-bucket/your-prefix/'  -- 替换为你的 S3 路径
);
  • metadata.ducklake 是元数据文件名(DuckDB 会自动管理)。
  • DATA_PATH 指定 S3 存储路径,所有 Parquet 数据将存储在此目录下。

5. 创建表、插入数据、更新和删除

(1) 创建表

-- 在 DuckLake 目录中创建表
CREATE TABLE IF NOT EXISTS metadata.customers (
    customer_id INTEGER,
    first_name STRING,
    last_name STRING,
    email STRING,
    city STRING,
    created_at TIMESTAMP
);

(2) 插入数据

-- 插入示例数据
INSERT INTO metadata.customers VALUES
  (1, 'Alice', 'Smith', 'alice@example.com', 'New York', CURRENT_TIMESTAMP),
  (2, 'Bob', 'Johnson', 'bob@example.com', 'San Francisco', CURRENT_TIMESTAMP);

(3) 更新数据

-- 更新 Bob 的城市
UPDATE metadata.customers
SET city = 'Los Angeles'
WHERE customer_id = 2;

(4) 删除数据

-- 删除 Alice 的记录
DELETE FROM metadata.customers
WHERE customer_id = 1;

(5) 查询数据

-- 查询所有客户
SELECT * FROM metadata.customers;

6. 高级功能:ACID 事务 & 时间旅行

DuckLake 支持 ACID 事务,确保数据一致性。例如:

-- 开启事务
BEGIN TRANSACTION;

-- 插入新数据
INSERT INTO metadata.customers VALUES
  (3, 'Charlie', 'Brown', 'charlie@example.com', 'Chicago', CURRENT_TIMESTAMP);

-- 更新数据
UPDATE metadata.customers
SET city = 'Seattle'
WHERE customer_id = 2;

-- 提交事务
COMMIT;

时间旅行(Time Travel) 允许查询历史数据版本:

-- 查询 1 小时前的数据(假设 DuckLake 支持时间旅行)
SELECT * FROM metadata.customers AT TIMESTAMP '2025-05-28 12:00:00';

注意:时间旅行功能可能需要额外配置,具体取决于 DuckLake 版本。

7. 为什么选择 DuckLake + DuckDB?

特性DuckLake + DuckDB传统数据湖(Hive/Hadoop)
元数据管理SQL 管理,简单高效依赖 Hive Metastore,复杂
查询性能向量化执行,极快依赖 MapReduce/Spark,较慢
数据格式Parquet(开放标准)Parquet/ORC(但依赖特定工具)
ACID 支持完整支持部分支持(如 Delta Lake)
厂商锁定无锁定,纯开源可能依赖 Hadoop/Spark 生态

8. 总结

DuckLake + DuckDB 提供了一种 轻量级、高性能、开源 的数据湖解决方案,特别适合:

  • 本地开发(嵌入式 DuckDB)
  • 云原生分析(S3/GCS 存储)
  • 需要 ACID 事务的场景

下一步尝试:

  • Minio本地环境 上集成 DuckDB
  • 使用 DuckDB + Python / R / Java 进行更复杂的数据分析

🚀 立即体验 DuckLake + DuckDB,构建你的下一代数据湖!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2403164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大语言模型提示词(LLM Prompt)工程系统性学习指南:从理论基础到实战应用的完整体系

文章目录 前言:为什么提示词工程成为AI时代的核心技能一、提示词的本质探源:认知科学与逻辑学的理论基础1.1 认知科学视角下的提示词本质信息处理理论的深层机制图式理论的实际应用认知负荷理论的优化策略 1.2 逻辑学框架下的提示词架构形式逻辑的三段论…

如何基于Mihomo Party http端口配置git与bash命令行代理

如何基于Mihomo Party http端口配置git与bash命令行代理 1. 确定Mihomo Party http端口配置 点击内核设置后即可查看 默认7892端口,开启允许局域网连接 2. 配置git代理 配置本机代理可以使用 127.0.0.1 配置局域网内其它机代理需要使用本机的非回环地址 IP&am…

埃文科技智能数据引擎产品入选《中国网络安全细分领域产品名录》

嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,埃文科技智能数据引擎产品成功入选数据分级分类产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解这一蓬勃发展的产业格局,嘶吼安全产业…

NLP学习路线图(二十六):自注意力机制

一、为何需要你?序列建模的困境 在你出现之前,循环神经网络(RNN)及其变种LSTM、GRU是处理序列数据(如文本、语音、时间序列)的主流工具。它们按顺序逐个处理输入元素,将历史信息压缩在一个隐藏…

Unity3D仿星露谷物语开发60之定制角色其他部位

1、目标 上一篇中定制了角色的衬衫、手臂。 本篇中将定制角色其他部位的图形,包括:裤子、发型、皮肤、帽子等。 2、定制裤子 (1)修改ApplyCharacterCustomisation.cs脚本 我们需要设置一个输入框选择裤子的颜色。 // Select …

Google机器学习实践指南(机器学习模型泛化能力)

🔥 Google机器学习(14)-机器学习模型泛化能力解析 Google机器学习(14)-机器学习模型泛化原理与优化(约10分钟) 一、泛化问题引入 ▲ 模型表现对比: 假设森林中树木健康状况预测模型: 图1:初始模型表现 …

MySQL性能调优:Mysql8高频面试题汇总

1,主键和唯一键有什么区别? 主键不能重复,不能为空,唯一键不能重复,可以为空。 建立主键的目的是让外键来引用。 一个表最多只有一个主键,但可以有很多唯一键 2,MySQL常用的存储引擎有哪些&…

vue+elementUI+springboot实现文件合并前端展示文件类型

项目场景: element的table上传文件并渲染出文件名称点击所属行可以查看文件,并且可以导出合并文件,此文章是记录合并文档前端展示的帖子 解决方案: 后端定义三个工具类 分别是pdf,doc和word的excle的目前我没整 word的工具类 package com.sc.modules…

高效绘制业务流程图!专业模板免费下载

在复杂的业务流程管理中,可视化工具已成为提升效能的核心基础设施。为助力开发者、项目经理及业务架构师高效落地流程标准化,本文将为你精选5套开箱即用的专业流程图模板。这些模板覆盖跨部门协作、电商订单、客户服务等高频场景,具备以下核心…

Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)

文章目录 Spring Boot Prometheus 实现应用监控(基于 Actuator 和 Micrometer)环境准备示例结构启动和验证验证 Spring Boot 应用Prometheus 抓取配置(静态方式)Grafana 面板配置总结 Spring Boot Prometheus 实现应用监控&…

PowerBI企业运营分析—列互换式中国式报表分析

PowerBI企业运营分析—列互换式中国式报表分析 欢迎来到Powerbi小课堂,在竞争激烈的市场环境中,企业运营分析平台成为提升竞争力的核心工具。 该平台通过高效整合多源数据,并实时监控关键指标,能够迅速揭示业务表现的全貌&#…

BugKu Web渗透之需要管理员

启动场景,打开网页,显示如下: 一般没有上面头绪的时候,就是两步:右键查看源代码 和 扫描网站目录。 步骤一: 右键查看源代码 和 扫描网站目录。 右键查看源代码没有发现异常。 于是扫描网站目录&…

TDengine 开发指南—— UDF函数

UDF 简介 在某些应用场景中,应用逻辑需要的查询功能无法直接使用内置函数来实现,TDengine 允许编写用户自定义函数(UDF),以便解决特殊应用场景中的使用需求。UDF 在集群中注册成功后,可以像系统内置函数一…

使用vsftpd搭建FTP服务器(TLS/SSL显式加密)

安装vsftpd服务 使用vsftpd RPM安装包安装即可,如果可以访问YUM镜像源,通过dnf或者yum工具更加方便。 yum -y install vsftpd 启动vsftpd、查看服务状态 systemctl enable vsftpd systemctl start vsftpd systemctl status vsftpd 备份配置文件并进…

1.1Nodejs和浏览器中的二进制处理

Buffer 在 Node.js 中,Buffer 类用于处理二进制数据。由于 JavaScript 在浏览器环境中主要用于处理字符串和数字等类型的数据,对二进制数据的处理能力较弱,因此 Node.js 引入了 Buffer 类来弥补这一不足,特别是在处理文件系统操作…

入门AJAX——XMLHttpRequest(Post)

一、前言 在上篇文章中,我们已经介绍了 HMLHttpRequest 的GET 请求的基本用法,并基于我提供的接口练习了两个简单的例子。如果你还没有看过第一篇文章,强烈建议你在学习完上篇文章后再学习本篇文章: 🔗入门AJAX——XM…

Qt(part1)Qpushbutton,信号与槽,对象树,自定义信号与槽,lamda表达式。

1、创建Qt程序 2、命名规范及快捷键 3、Qpushbutton按钮创建 4、对象树概念 5、信号与槽 6、自定义信号与槽 7、当自定义信号和槽发生重载时 8、信号可以连接信号,信号也可以断开。 9、lamda表达式

西北某省级联通公司:3D动环模块如何实现机房“一屏统管”?

一、运营商机房监控痛点凸显 在通信行业快速发展的当下,西北某省级联通公司肩负着保障区域通信畅通的重任。然而,公司分布广泛的机房面临着诸多监控难题,尤其是偏远机房环境风险无法实时感知这一痛点,严重影响了机房的稳定运行和通…

视觉分析在人员行为属性检测中的应用

基于视觉分析的人员行为属性检测方案 一、背景与需求分析 在工业生产、建筑施工、公共安全等领域,人员行为属性的合规性检测是保障安全生产的关键环节。例如,工地工人未佩戴安全帽、厨房人员未佩戴手套、作业现场人员使用手机等行为,均可能…

电子行业AI赋能软件开发经典案例——某金融软件公司

01.案例标题 金融行业某金融软件公司通过StarShip CodeSouler达成效率突破性增长,零流程侵入验证AI代码高度可行性 02.执行摘要 某金融软件公司在核心产品研发中引入开放传神(OpenCSG)的StarShip CodeSouler AI代码生成平台,在无…