Hi kandy.wang:
忘记说明,我指定了dt为primary key,按理说会按照dt做update,但是为何auto_increment会不断的变大呢,而id也没有变化,id字段值始终为1。还望解惑。 原始邮件 发件人: kandy.wang<[hidden email]> 收件人: user-zh<[hidden email]> 发送时间: 2020年9月27日(周日) 14:01 主题: Re:Re: Flink SQL撤回流问题 hi 你建mysql要指定主键,另外创建flink表时也要指定一下主键 PRIMARY KEY (id) NOT ENFORCED,这样就会根据主键upsert了 在 2020-09-27 13:36:25,"xiao cai" <[hidden email]> 写道: >如果是先delete再insert,为何主键id一直都是1呢,如果delete在insert时指定了id值,那么auto_increment是不会变的。 >这是我很困惑的地方。 > > > 原始邮件 >发件人: lec ssmi<[hidden email]> >收件人: flink-user-cn<[hidden email]> >发送时间: 2020年9月27日(周日) 13:06 >主题: Re: Flink SQL撤回流问题 > > >是不是底层的sink在处理retract的时候,使用的是先delte再insert , 而不是直接update呢。 xiao cai <[hidden email]> 于2020年9月27日周日 下午12:08写道: > 场景如下: > source table: kafka > sink table: mysql schem(id, dt, cnt) > > > insert : > insert into sink > select dt,count(distinct id) from source group by dt; > > > 这时mysql对应sink表中有一条数据(1, 2020-09-25, 100),随着事件消费,cnt字段会不断变化,id,dt保持不变 > show create table sink可以发现auto_increment在不断的变大。 > 当超过id的取值范围,就会报错了。 > > > 原始邮件 > 发件人: Michael Ran<[hidden email]> > 收件人: user-zh<[hidden email]> > 发送时间: 2020年9月27日(周日) 11:51 > 主题: Re:Flink SQL撤回流问题 > > > 详细场景描述下呢 在 2020-09-27 11:48:36,"xiao cai" <[hidden email]> 写道: >Hi: > >使用Flink SQL撤回流写入MySQL,表的auto_increment > 越来越大是为什么,我的输出结果只有一条,mysql表里也只有一条数据,自增主键id的值一直为1,但是auto_increment却越来越大。求解答。 |
其实你可以把id 字段干掉,如果自增。<br/>如果dt是你的主键,那么第一条数据插入是(1,dt,数量)。<br/>第二条内存统计的时候是(1,dt,新数量)<br/>那么生成的upsert 语句是 <br/><br/>insert into table(id,dt,num) values(1,dt,新数量) <br/>ON DUPLICATE KEY UPDATE dt=values(dt) <br/><br/>这样发现1是你写死的。<br/>dt 不变。但是数量发生了改变。<br/><br/>mysql逻辑处理的时候,(猜测是删除后插入replace等,或者能触发auto 的动作), <br/>也就是id,dt 不变,数量变的逻辑
在 2020-09-27 14:13:21,"xiao cai" <[hidden email]> 写道: >Hi kandy.wang: >忘记说明,我指定了dt为primary key,按理说会按照dt做update,但是为何auto_increment会不断的变大呢,而id也没有变化,id字段值始终为1。还望解惑。 > > > 原始邮件 >发件人: kandy.wang<[hidden email]> >收件人: user-zh<[hidden email]> >发送时间: 2020年9月27日(周日) 14:01 >主题: Re:Re: Flink SQL撤回流问题 > > >hi 你建mysql要指定主键,另外创建flink表时也要指定一下主键 PRIMARY KEY (id) NOT ENFORCED,这样就会根据主键upsert了 在 2020-09-27 13:36:25,"xiao cai" <[hidden email]> 写道: >如果是先delete再insert,为何主键id一直都是1呢,如果delete在insert时指定了id值,那么auto_increment是不会变的。 >这是我很困惑的地方。 > > > 原始邮件 >发件人: lec ssmi<[hidden email]> >收件人: flink-user-cn<[hidden email]> >发送时间: 2020年9月27日(周日) 13:06 >主题: Re: Flink SQL撤回流问题 > > >是不是底层的sink在处理retract的时候,使用的是先delte再insert , 而不是直接update呢。 xiao cai <[hidden email]> 于2020年9月27日周日 下午12:08写道: > 场景如下: > source table: kafka > sink table: mysql schem(id, dt, cnt) > > > insert : > insert into sink > select dt,count(distinct id) from source group by dt; > > > 这时mysql对应sink表中有一条数据(1, 2020-09-25, 100),随着事件消费,cnt字段会不断变化,id,dt保持不变 > show create table sink可以发现auto_increment在不断的变大。 > 当超过id的取值范围,就会报错了。 > > > 原始邮件 > 发件人: Michael Ran<[hidden email]> > 收件人: user-zh<[hidden email]> > 发送时间: 2020年9月27日(周日) 11:51 > 主题: Re:Flink SQL撤回流问题 > > > 详细场景描述下呢 在 2020-09-27 11:48:36,"xiao cai" <[hidden email]> 写道: >Hi: > >使用Flink SQL撤回流写入MySQL,表的auto_increment > 越来越大是为什么,我的输出结果只有一条,mysql表里也只有一条数据,自增主键id的值一直为1,但是auto_increment却越来越大。求解答。 |
Free forum by Nabble | Edit this page |