LakeSoul 与 Flink 集成使用指南

LakeSoul 与 Flink 集成使用指南

LakeSoul lakesoul-io/LakeSoul: 是一个基于区块链和人工智能技术的去中心化社交平台。适合对区块链技术和人工智能有兴趣的人,特别是想探索这些技术在社交场景下应用的人。特点是采用了区块链技术保障用户隐私和数据安全,同时结合人工智能技术实现智能匹配和推荐功能。 LakeSoul 项目地址: https://gitcode.com/gh_mirrors/la/LakeSoul

前言

LakeSoul 作为新一代湖仓一体框架,与 Flink 的深度集成为实时数据湖场景提供了强大支持。本文将详细介绍如何在 Flink 中使用 LakeSoul,包括环境配置、表操作、数据读写等核心功能。

环境准备

版本兼容性

| LakeSoul 版本 | 兼容 Flink 版本 | |---------------|-----------------| | 3.0.0+ | 1.20 | | 2.4.x+ | 1.17 | | 2.1.x-2.3.x | 1.14 |

PostgreSQL 配置

LakeSoul 依赖 PostgreSQL 作为元数据存储,需要在 Flink 配置文件中添加以下配置:

containerized.master.env.LAKESOUL_PG_DRIVER: com.lakesoul.shaded.org.postgresql.Driver
containerized.master.env.LAKESOUL_PG_USERNAME: root
containerized.master.env.LAKESOUL_PG_PASSWORD: root
containerized.master.env.LAKESOUL_PG_URL: jdbc:postgresql://localhost:5432/test_lakesoul_meta?stringtype=unspecified
containerized.taskmanager.env.LAKESOUL_PG_DRIVER: com.lakesoul.shaded.org.postgresql.Driver
containerized.taskmanager.env.LAKESOUL_PG_USERNAME: root
containerized.taskmanager.env.LAKESOUL_PG_PASSWORD: root
containerized.taskmanager.env.LAKESOUL_PG_URL: jdbc:postgresql://localhost:5432/test_lakesoul_meta?stringtype=unspecified

注意事项

  1. 需要根据实际部署修改数据库连接信息
  2. 在 Session 模式下提交作业时,需要在客户端单独配置环境变量

基础操作

创建表

LakeSoul 表支持主键、分区等特性,以下是创建表的示例:

CREATE TABLE `lakesoul`.`default`.test_table (
    `id` INT,
    name STRING,
    score INT,
    `date` STRING,
    region STRING,
    PRIMARY KEY (`id`,`name`) NOT ENFORCED
) PARTITIONED BY (`region`,`date`)
WITH (
    'connector'='lakesoul',
    'hashBucketNum'='4',
    'use_cdc'='true',
    'path'='file:///tmp/lakesoul/flink/sink/test'
);

关键参数说明

  • PARTITIONED BY:指定范围分区字段
  • PRIMARY KEY:定义主键(支持联合主键)
  • hashBucketNum:哈希分桶数(主键表必须设置)
  • use_cdc:是否启用CDC格式
  • path:表数据存储路径

数据操作

插入数据
-- 批量插入
INSERT INTO `lakesoul`.`default`.test_table 
VALUES (1, 'AAA', 98, '2023-05-10', 'China');

-- 流式插入(从其他表读取)
INSERT INTO `lakesoul`.`default`.test_table 
SELECT * FROM source_table;
更新数据(批模式)
UPDATE `lakesoul`.`default`.test_table 
SET score = 100 
WHERE id = 1;
删除数据(批模式)
DELETE FROM `lakesoul`.`default`.test_table 
WHERE id = 1;

流模式注意事项

  1. 需要设置合理的检查点间隔(建议≥1分钟)
  2. 设置正确的时区:
    SET 'table.local-time-zone' = 'Asia/Shanghai';
    SET 'execution.checkpointing.interval' = '2min';
    

数据查询

1. 全量查询

SELECT * FROM `lakesoul`.`default`.test_table 
WHERE region='China' AND `date`='2023-05-10';

2. 快照查询

查询指定时间点前的所有数据:

SELECT * FROM `lakesoul`.`default`.test_table 
/*+ OPTIONS('readtype'='snapshot', 'readendtime'='2023-05-01 15:20:15', 'timezone'='Asia/Shanghai')*/ 
WHERE region='China';

3. 增量范围查询

查询指定时间范围内的增量数据:

SELECT * FROM `lakesoul`.`default`.test_table 
/*+ OPTIONS('readtype'='incremental', 'readstarttime'='2023-05-01 15:15:15', 'readendtime'='2023-05-01 15:20:15', 'timezone'='Asia/Shanghai')*/ 
WHERE region='China';

4. 流式查询

持续读取指定时间点后的新数据:

SELECT * FROM `lakesoul`.`default`.test_table 
/*+ OPTIONS('timezone'='Asia/Shanghai')*/ 
WHERE region='China';

5. Lookup Join

LakeSoul 支持 Flink 的 Lookup Join,适合小维度表关联场景:

-- 创建维度表
CREATE TABLE `lakesoul`.`default`.customers (
    `c_id` INT,
    `name` STRING,
    PRIMARY KEY (`c_id`) NOT ENFORCED
) WITH (
    'connector'='lakesoul',
    'hashBucketNum'='1',
    'path'='file:///tmp/lakesoul/flink/sink/customers'
);

-- 创建事实表
CREATE TABLE `lakesoul`.`default`.orders (
    `o_id` INT,
    `o_c_id` INT,
    PRIMARY KEY (`o_id`) NOT ENFORCED
) WITH (
    'connector'='lakesoul',
    'hashBucketNum'='1',
    'path'='file:///tmp/lakesoul/flink/sink/orders',
    'lookup.join.cache.ttl'='60s'
);

-- 执行Lookup Join
SELECT `o_id`, `c_id`, `name`
FROM (SELECT *, proctime() as proctime FROM `lakesoul`.`default`.orders) as o
JOIN `lakesoul`.`default`.customers FOR SYSTEM_TIME AS OF o.proctime
ON c_id = o_cid;

执行模式切换

LakeSoul 支持在 Flink 的批流模式下运行,可通过以下命令切换:

-- 切换为流模式
SET execution.runtime-mode = streaming;
SET 'execution.checkpointing.interval' = '1min';

-- 切换为批模式
SET execution.runtime-mode = batch;

总结

LakeSoul 与 Flink 的深度集成提供了强大的实时数据湖能力,支持:

  • 完整的 CRUD 操作
  • 多种查询模式(全量/快照/增量/流式)
  • 高效的 Lookup Join
  • 灵活的批流一体执行

通过合理配置和使用这些功能,可以构建高效的实时数据湖解决方案。

LakeSoul lakesoul-io/LakeSoul: 是一个基于区块链和人工智能技术的去中心化社交平台。适合对区块链技术和人工智能有兴趣的人,特别是想探索这些技术在社交场景下应用的人。特点是采用了区块链技术保障用户隐私和数据安全,同时结合人工智能技术实现智能匹配和推荐功能。 LakeSoul 项目地址: https://gitcode.com/gh_mirrors/la/LakeSoul

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平依佩Ula

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值