读取数据

本文将为您介绍读取Fluss数据的流批方式。

数据读取

流模式读取

支持多种消费模式,对于主键表,默认消费模式是initial,首先消费全量数据,然后再消费增量数据。

  1. 登录实时计算管理控制台

  2. 单击目标工作空间操作列下的控制台

  3. 在左侧导航栏,单击数据开发 > ETL

  4. 单击image后,单击新建流作业,填写文件名称并选择引擎版本,单击创建

    image

  5. 编写作业代码。

    SELECT * FROM `fluss-catalog`.`my_db`.`my_table`;
    
    # earliest模式
    SELECT * FROM my_table /*+ OPTIONS('scan.startup.mode' = 'earliest') */;

批模式读取

  • Fluss 的主键表和日志表都支持LIMIT读取, 在批模式读取时会转化为一个最新N条数据的探查。

  • 主键表支持精确查询,日志表可以进行聚合查询。

  1. 登录实时计算管理控制台

  2. 单击目标工作空间操作列下的控制台

  3. 在左侧导航栏,单击数据开发 > ETL

  4. 单击image后,单击新建批作业,填写文件名称并选择引擎版本SQL方言,单击创建

    image

  5. 编写作业代码。

    # LIMIT 读取
    SELECT * FROM `fluss-catalog`.`my_db`.`my_table` LIMIT 10;
    
    # 精确查询(仅主键表)
    SELECT * FROM `fluss-catalog`.`my_db`.`my_pk_tbl` WHERE shop_id = 10000 and user_id = 123456;
    
    # 聚合查询
    SELECT count(*) FROM `fluss-catalog`.`my_db`.`my_log_table`;

数据查询

  • 仅主键表支持数据查询。

  • 查询条件必须包含全部的主键,且不包含其他列。

  1. 登录实时计算管理控制台

  2. 单击目标工作空间操作列下的控制台

  3. 在左侧导航栏,单击数据查询 > 新建查询脚本

    SELECT * FROM `fluss-catalog`.`my_db`.`customer` 
    WHERE c_custkey = 1;
  4. 选中代码块,单击运行即可查看结果。

消费模式

消费模式

主键表

日志表

适用场景

full(默认)

首先消费全量数据,然后再消费增量数据。

从最早的位点开始消费。

适用于需要处理全量数据的场景,如全量数据分析。

earliest

从最早的 binlog 位点开始消费。

从最早的位点开始消费。

适用于需要处理历史变更数据的场景,如初次加载。

latest

从最新的 binlog 位点开始消费,

从最新的位点开始消费

适用于仅关注最新数据的场景,如实时监控。

timestamp

从指定的时间(由配置项 scan.startup.timestamp 指定)开始消费 binlog。

从指定的时间(由配置项 scan.startup.timestamp 指定)开始消费

适用于基于特定时间点的数据恢复或回溯。

SQL示例

// 默认full模式
SELECT * FROM my_table ;

// earliest 消费模式
SELECT * FROM my_table /*+ OPTIONS('scan.startup.mode' = 'earliest') */;

// latest 消费模式
SELECT * FROM my_table /*+ OPTIONS('scan.startup.mode' = 'latest') */;

// 使用时间戳的方式
SELECT * FROM my_table
/*+ OPTIONS('scan.startup.mode' = 'timestamp',
'scan.startup.timestamp' = '1678883047356') */;

// 使用时间字符串的方式
SELECT * FROM my_table
/*+ OPTIONS('scan.startup.mode' = 'timestamp',
'scan.startup.timestamp' = '2023-12-09 23:09:12') */;