云原生多模数据库 Lindorm计算引擎提供Lindorm CDC(Change Data Capture)数据源,您可以通过该数据源使用Spark SQL查询Lindorm实例其他引擎变更的数据。
前提条件
Lindorm实例已开通LTS(Lindorm Tunnel Service)服务,具体请参见购买并登录LTS。
Lindorm宽表已创建数据订阅通道,创建方法请参见通过Pull模式创建数据订阅通道。
说明创建数据订阅通道时需要注意以下几点:
不要勾选在投递的数据内容中为列名省略family前缀。
数据序列化格式中请选择json。
一个主题名仅对应一个Lindorm表名。
为HBase表设置LINDORM_HBASE_CATALOG属性,设置方法请参见访问宽表数据。
说明LINDORM_HBASE_CATALOG属性表示SparkSQL Schema与HBase表Schema的对应关系,Lindorm CDC数据源根据该属性的内容提取HBase表Schema。
使用限制
仅支持HBase表(表示通过HBase客户端写入Lindorm宽表引擎的表)。
实时数据订阅功能的数据消费格式仅支持JSON格式文件。
作业提交方式
您可以通过以下两种方法编写并提交Lindorm CDC数据源的Spark作业。
读写Lindorm CDC数据源的语法说明请参见Lindorm CDC数据源配置介绍与语法。
Lindorm CDC数据源配置介绍与语法
Lindorm CDC数据源的库表结构介绍
Lindorm计算引擎提供的Lindorm CDC数据源名称为lindorm_cdc。
Lindorm CDC数据源不支持管理Namespace,仅支持管理表。表名称为创建数据订阅通道的主题名。
Lindorm CDC数据源输出的Schema介绍
Lindorm CDC数据源根据LINDORM_HBASE_CATALOG属性提取HBase表的Schema作为Lindorm CDC数据源的Schema。Lindorm CDC数据源从Kafka中读取数据,每一条操作记录都会被保存。Lindorm CDC数据源的Schema支持以下meta字段:
字段名 | 类型 | 说明 | 字段配置值 |
_cdc_timestamp_kafka | long | 该操作记录写入Kafka的时间戳。单位为毫秒。 | 无需配置,Schema中包含默认配置值。 |
_cdc_operation_type | string | 该操作记录的变更类型。
| 无需配置,Schema中包含默认配置值。 |
_cdc_timestamp_lindorm | long | 该操作记录被Lindorm引擎处理的时间戳。单位为毫秒。 | spark.sql.catalog.lindorm_cdc.lindormTsEnabled |
_cdc_timestamp_lts | long | 该操作记录被LTS处理的时间戳。单位为毫秒。 | spark.sql.catalog.lindorm_cdc.ltsTsEnabled |
Lindorm CDC数据源的配置项介绍
Lindorm CDC数据源的配置项如下表所示:
配置项 | 是否必填 | 说明 | 示例值 |
spark.sql.catalog.lindorm_cdc.username |
| 连接Lindorm宽表引擎的用户名。 | 默认用户名root。 |
spark.sql.catalog.lindorm_cdc.password |
| 连接Lindorm宽表引擎的密码。 | 默认密码root。 |
spark.sql.catalog.lindorm_cdc.lindormTsEnabled | 非必填 | Lindorm处理该操作记录的时间戳。默认值为false。设置为true时Lindorm CDC数据源的Schema中会增加_cdc_timestamp_lindorm字段。 | true |
spark.sql.catalog.lindorm_cdc.ltsTsEnabled | 非必填 | LTS处理该操作记录的时间戳。默认值为false。设置为true时Lindorm CDC数据源的Schema中会增加_cdc_timestamp_lts字段。 | true |
Lindorm CDC数据源的语法介绍
Lindorm CDC数据源支持的语法如下表所示:
语法 | 描述 | 示例 |
USE table_name | 使用某个表。 | USE test |
SHOW TABLES | 查看所有的表。 | SHOW TABLES |
DESCRIBE table_name | 查看某个表的详细信息。 | DESC test或者DESCRIBE test |
SELECT | 关于SELECT语法请参见Spark SQL。 说明 SELECT语法使用中需要注意以下两点:
|