云原生多模數據庫 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語法使用中需要注意以下兩點:
|