全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
流计算

创建云数据库(RDS)/(DRDS)结果表

更新时间:2018-04-17 16:05:19

云数据库(RDS)/(DRDS)

云数据库(RDS)/(DRDS)的插件的WITH里的参数都是一致、可以通用!

注意:在使用的时候必须在RDS或DRDS里面要有真实的表存在!

DDL定义

流计算支持使用RDS作为结果输出,目前支持数据存储类型有MySql。示例代码如下:

  1. create table rds_output(
  2. id int,
  3. len int,
  4. content VARCHAR,
  5. primary key(id,len)
  6. ) with (
  7. type='rds',
  8. url='jdbc:mysql:XXXXXXXXXX',
  9. tableName='test4',
  10. userName='test',
  11. password='XXXXXX'
  12. );

流计算支持使用DRDS作为结果输出

  1. create table drds_output(
  2. id int,
  3. len int,
  4. content VARCHAR,
  5. primary key(id,len)
  6. ) with (
  7. type='drds',
  8. url='jdbc:mysql:XXXXXXXXXX',
  9. tableName='test4',
  10. userName='test',
  11. password='XXXXXX'
  12. );

需要注意的是:

  • 流计算写入RDS数据库结果表原理是,针对流计算每行结果数据,拼接成一行SQL向目标端数据库进行执行。如果使用批量写,需要在url后面加上 ?rewriteBatchedStatements=true,否则性能会很差。

  • RDS/Mysql支持自增主键,如果需要让流计算写入数据支持自增主键,在DDL中不声明该自增字段即可。例如,ID是自增字段,那么流计算DDL不写出该自增字段,那么数据库在一行数据写入过程中数据库会自动填补相关的自增字段。

WITH参数

参数 注释说明 备注
url 地址 RDS的URL地址DRDS的URL地址
tableName 表名
userName 用户名
password 密码
maxRetryTimes 最大尝试插入次数 可选,默认为3
batchSize 每次写的批次大小 可选,默认值50,表示每次写多少条
bufferSize 去重的buffer大小,需要指定主键才生效 可选,默认值1(1.4.1默认值改为1000),表示输入的数据达到1条就开始输出
flushIntervalMs 写超时时间 可选,单位毫秒,默认值5000,表示数据超过了5秒,还没有写过,就会将缓存的数据都写一次
excludeUpdateColumns 对相同key的值更新时排除掉相应的column 可选,默认为空(primary keys 字段默认会排除)
ignoreDelete 是否忽略delete操作 默认为false

类型映射

RDS字段类型 流计算字段类型
text varchar
byte varchar
integrt int
long bigint
double double
date varchar
datetime varchar
timestamp varchar
time varchar
year varchar
float float
decimal decimal
char varchar

JDBC 参数连接

参数名称 参数说明 缺省值 最低版本要求
useUnicode 是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true false 1.1g
characterEncoding 当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk false 1.1g
autoReconnect 当数据库连接异常中断时,是否自动重新连接? false 1.1
autoReconnectForPools 是否使用针对数据库连接池的重连策略 false 3.1.3
failOverReadOnly 自动重连成功后,连接是否设置为只读? true 3.0.12
maxReconnects autoReconnect设置为true时,重试连接的次数 3 1.1
initialTimeout autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒 2 1.1
connectTimeout 和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本 0 3.0.1
socketTimeout socket操作(读写)超时,单位:毫秒。 0表示永不超时 0 3.0.1

FAQ

  1. Blink的结果数据,写入rds表的话,是按主键更新的,还是新生成一条记录呀?

    如果在ddl中定义了主键,会采用insert into on duplicate key update的方式更新记录,也就意味着对于不存在的主键字段会直接插入,存在的则更新相应的值。如果ddl中没有声明primary key,则会insert into 方式插入记录,只是追加数据。

本文导读目录