我没发现官网没看到DataStream有cdc的connector貌似,你是怎么搞的呢。


javenjiangfsof <javenjiangf...@163.com> 于2021年2月1日周一 下午1:40写道:

> DataStream API,像下面这样
> ```
> val list = ...   //i use jdbc to get the init data
> val dimensionInitStream = env.fromCollection(list)
> val dimension =
> dimensionStream.union(dimensionInitStream).broadcast(descriptor)
> mainStream.connect(dimensionStream)
> ...
> ```
> 注:我怕没描述清楚问题:问题在于主流和广播流关联的时候,广播流不一定会先于主流到,导致关联不到配置
>
> 在 2021年2月1日 13:30,赵一旦<hinobl...@gmail.com> 写道:
>
>
> FlinkSQL ? javenjiangfsof <javenjiangf...@163.com> 于2021年2月1日周一
> 上午11:40写道: > Hi 社区的各位 > >
> 最近也是刚刚开始接触flink,现在是有这样的一个需求,主流是来自于kafka,需要关联的配置来自于mysql,由于配置会发生新增更新删除的操作,所以使用cdc
> > + >
> broadcaststate来做配置的关联,但是这会存在一个广播流的初始化问题,我看了网上和社区中其他关于broadcaststate这个问题的回复,大概有一下两种解决方案:
> > 1.初始化通过jdbc获取,通过fromCollection处理后,union >
> cdc过来的配置流,这个经过测试确实可以解决,但是会有疑惑:通过fromCollection处理的内存的数据一定会比kafka,cdc过来的数据快吗?为什么…
> > >
> 2.通过ListState(有看到keyed流的解决方案,但是这里我并不需要keyby,keyby之后的数据很不均匀,还会产生很多partition,还会有shuffle损耗等问题),但是这会涉及到何时触发缓存中数据的触发关联,以及清理状态的问题??(如果能给出例子是最好的…)
> > 3.更好的方案??? > > > 目前来看我更倾向于与第一种方案,实现也很简单但是那个问题我无法确定,或许我应该考虑union+ >
> liststate,jdbc过来的数据最后添加标志位做触发关联,会不会多此一举? > 希望能看到各位的回复,感谢

回复