云数据仓库ADB 3.0 支持 with 用法吗?

云数据仓库ADB 3.0 支持 with 用法吗?
3a6adf2146bfc054cb55116b1bd5e51e.png

展开
收起
你鞋带开了~ 2024-03-13 16:17:30 62 分享 版权
阿里云 AI 助理回答

云原生数据仓库AnalyticDB MySQL版(ADB)3.0确实支持WITH用法,主要用于在创建表时指定连接器及相关参数。以下是关于WITH用法的详细说明和配置信息:


1. WITH用法的基本结构

在ADB 3.0中,WITH子句通常用于定义外部表或临时表的连接器配置。以下是一个典型的CREATE TEMPORARY TABLE语句示例,展示了WITH子句的使用方式:

CREATE TEMPORARY TABLE adb_table (
 `id` INT,
 `num` BIGINT,
 PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
 'connector' = 'adb3.0',
 'url' = '<yourUrl>',
 'userName' = '<yourUsername>',
 'password' = '<yourPassword>',
 'tableName' = '<yourTablename>'
);
  • connector:指定连接器类型,固定值为adb3.0
  • url:JDBC连接地址,格式为jdbc:mysql://<endpoint>:<port>/<databaseName>
  • userNamepassword:数据库用户名和密码。
  • tableName:目标表的名称。

2. WITH参数分类及说明

WITH子句中的参数可以分为以下几类:

(1)通用参数

这些参数适用于所有场景,包括结果表和维表: - connector:连接器类型,必填,固定值为adb3.0。 - url:JDBC连接地址,必填。 - userNamepassword:数据库用户名和密码,必填。 - tableName:目标表名称,必填。 - maxRetryTimes:写入或读取失败后的最大重试次数,默认值为10。

(2)结果表独有参数

这些参数仅适用于结果表: - batchSize:一次批量写入的条数,默认值为1000。 - bufferSize:内存中缓存的数据条数,默认值为1000。 - flushIntervalMs:清空缓存的时间间隔,单位为毫秒,默认值为3000。 - ignoreDelete:是否忽略DELETE操作,默认值为false。 - replaceMode:是否采用REPLACE INTO语法插入数据,默认值为true。 - excludeUpdateColumns:更新主键值相同时忽略指定字段的更新。 - connectionMaxActive:线程池大小,默认值为40。

(3)维表独有参数

这些参数仅适用于维表: - cache:缓存策略,支持NoneLRUALL,默认值为ALL。 - cacheSize:缓存大小,仅在cache=LRU时生效,默认值为100000。 - cacheTTLMs:缓存超时时间,单位为毫秒,默认值为Long.MAX_VALUE


3. 重要注意事项

  • 主键一致性:在Flink DDL中定义的主键必须与ADB MySQL物理表中的主键保持一致,包括是否存在主键和主键名称。如果不一致,可能会影响数据正确性。
  • 版本要求:部分参数(如replaceMode)仅在AnalyticDB MySQL 3.1.3.5及以上版本中支持,请确保集群版本满足要求。
  • 缓存策略选择:如果使用CACHE ALL策略,请注意节点内存大小,防止出现OOM问题。建议增加维表JOIN节点的内存,增加的内存大小为远程表数据量的两倍。

4. 示例:完整的WITH用法

以下是一个包含多种WITH参数的完整示例:

CREATE TEMPORARY TABLE adb_sink (
 `id` INT,
 `num` BIGINT,
 PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
 'connector' = 'adb3.0',
 'url' = 'jdbc:mysql://<endpoint>:<port>/<databaseName>',
 'userName' = '<yourUsername>',
 'password' = '<yourPassword>',
 'tableName' = '<yourTablename>',
 'batchSize' = '500',
 'bufferSize' = '1000',
 'flushIntervalMs' = '5000',
 'ignoreDelete' = 'true',
 'replaceMode' = 'true',
 'connectionMaxActive' = '50'
);

总结

综上所述,云原生数据仓库ADB 3.0完全支持WITH用法,并提供了丰富的参数配置选项以满足不同场景的需求。在使用时,请根据实际需求选择合适的参数,并注意版本兼容性和主键一致性等关键点。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。

还有其他疑问?
咨询AI助理