使用 Flink SQL 访问 Tablestore 源表

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介:     本文将介绍如何使用使用 Flink SQL 通过流处理的方式访问 Tablestore 源表。 在流计算场景下,用户可以基于[通道服务](https://help.aliyun.com/document_detail/102489.html),利用CDC(数据变更捕获)技术,通过 Flink 完成流式消费和计算。 Flink on Tablesto

    本文将介绍如何使用使用 Flink SQL 通过流处理的方式访问 Tablestore 源表。
在流计算场景下,用户可以基于通道服务,利用CDC(数据变更捕获)技术,通过 Flink 完成流式消费和计算。 Flink on Tablestore 可以提供 at-least-once 一致性语义。

Tablestore 简介

    Tablestore 启发自 Google 的 Bigtable 论文,从 2009 年开始,在阿里云的飞天团队内,开始孵化。经过 10 年的锤炼,如今在集团、公有云和专有云积累了各式各样的客户和场景。
    Tablestore 是一款 Serverless 云原生存储引擎,Serverless 相比实例售卖类型的产品,在业务有波峰波谷时天生就有较大的优势,基于 Bigtable 的主存储采用行的方式进行存储,可以支撑单表亿级别的 QPS。下面列了一些 Tablestore 的核心特性:
image.png

前置准备

    由于本文是 Flink SQL - Tablestore 使用系列的第一篇文章,将会有一些篇幅介绍Flink实时计算平台的申请与使用。以下是几个前置准备步骤:

    1. 购买 Flink 服务,步骤参见实时计算Flink版-产品文档,建议购买 Blink 独享集群(Flink 全托管 / 半托管暂不支持 Tablestore 源表)。如下图所示:

image.png
image.png

    2. 创建Flink集群以及项目,如下图所示:

image.png

快速开始

步骤一 创建 Tablestore 源表和数据通道

    1. 创建 Tablestore 源表

    Tablestore 的详细开通步骤请参考官方文档,本文demo中所创建出来的表名为 Demo, 其中,CellNumber、StartTime 作为数据表的主键,分别代表主叫号码和通话发生时间,CalledNumber、Duration 和 BaseStationNumber 三列为数据表的预定义列,分别代表被叫号码、通话时长和基站号码,数据示例如下图所示。

image.png

    2. 在主表上创建数据通道,如下图所示,通道列表里面会显示该通道的名字、ID 以及类型。其中,通道名会用于后续的流式处理。

image.png

步骤二 编写 Flink SQL 任务并启动

    1. 进入 Flink 项目开发平台,进行任务开发,如下图所示:

image.png

    2. 编写流任务

# 创建tablestore源表
CREATE TABLE Demo (
    CellNumber              VARCHAR,
    StartTime               BIGINT,
    BaseStationNumber       VARCHAR,
    CalledNumber            VARCHAR,
    Duration                BIGINT,
    OtsRecordType           VARCHAR header,
    OtsRecordTimestamp      BIGINT header,
    Duration_OtsColumnType  VARCHAR header
) WITH (
    type ='ots',
    endPoint ='https://instance_name.cn-hangzhou.vpc.tablestore.aliyuncs.com',
    instanceName = 'instance_name',
    tableName ='table_name',
    tunnelName = 'tunnel_name',
    accessId ='access_xxxxxx_id',
    accessKey ='access_xxxxxx_key',
    ignoreDelete = 'true'
);

# 创建print结果表(打印到taskmanager.out中)
CREATE TABLE print_sink (
    CellNumber              VARCHAR,
    StartTime               BIGINT,
    BaseStationNumber       VARCHAR,
    CalledNumber            VARCHAR,
    Duration                BIGINT,
    OtsRecordType           VARCHAR,
    OtsRecordTimestamp      BIGINT,
    Duration_OtsColumnType  VARCHAR
) WITH (
  type='print'
);

# 创建数据转换过程
INSERT INTO print_sink
SELECT *
FROM Demo;

    源表字段header配置:

    - OtsRecordType:数据操作类型,包括PUT, UPDATE, DELETE。
    - OtsRecordTimestamp:数据操作时间(全量数据时,OtsRecordTimestamp为0)。
    - <列名>_OtsColumnType:某列的操作类型,包括PUT, UPDATE, DELETE。

    源表参数配置:

    - type:数据源类型,tablestore源表为ots。
    - endPoint: 表格存储实例访问地址,建议用VPC地址。
    - instanceName:实例名。
    - tableName:表名
    - tunnelName:tunnel名。
    - accessId: 阿里云账号AK ID。
    - accessKey:阿里云账号AK Secret。
    - ignoreDelete: 是否忽略delete操作,默认值为false。

    更详细的配置请参考:Flink官方文档-创建表格存储Tablestore源表

    3. 点击保存后,上线。点击运维,查看流计算任务运行情况。具体如下图所示:

image.png

步骤三 观察流计算结果

    在上面的 Case 中,我们将 Tablestore 源表上的数据打印到 Taskmanager 的输出中,具体运维与结果观察方式如下图所示:
image.png
image.png

欢迎加入

    表格存储 Tablestore 推出了很多贴近用户场景的文章与示例代码,欢迎大家加入我们的钉钉公开交流群一起讨论,群号:23307953。(1 群已满员,欢迎加入 2 群)
image.png

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
4天前
|
SQL 关系型数据库 MySQL
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
Linux系统部署Yearning SQL审核平台结合内网穿透实现公网访问
|
3天前
|
SQL 分布式计算 Apache
实时计算 Flink版产品使用合集之如何选用 Flink SQL 的方式进行开发
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
15 1
|
1天前
|
SQL Java 关系型数据库
实时计算 Flink版操作报错合集之通过flink sql形式同步数据到hudi中,本地启动mian方法报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
17 8
|
1天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之flink sql ROW_NUMBER()回退更新的机制,有相关文档介绍吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 1
|
2天前
|
SQL 流计算 API
实时计算 Flink版产品使用合集之ClickHouse-JDBC 写入数据时,发现写入的目标表名称与 PreparedStatement 中 SQL 的表名不一致如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
8 0
|
2天前
|
SQL 数据处理 API
实时计算 Flink版产品使用合集之遇到SQL Server锁表问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
8 0
|
2天前
|
SQL API 流计算
实时计算 Flink版产品使用合集之在Mac M1下的Docker环境中开启SQL Server代理的操作步骤是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
18 1
|
2天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之delete主键删除源表一条记录,目标表未删除数据问题如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
15 1
|
2天前
|
消息中间件 关系型数据库 网络安全
实时计算 Flink版操作报错合集之Flink sql-client 针对kafka的protobuf格式数据建表,报错:java.lang.ClassNotFoundException 如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
13 1
|
2天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在使用Flink SQL向ClickHouse写入数据的过程中出现丢数据或重复数据的情况如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
17 1