我有两个需求
1.如果我需要开一个一分钟的窗口,但是我希望能够每5分钟输出一次结果(输出每分钟的聚合结果,即输出5行聚合结果),该怎么办? 2.如果我需要开一个一个小时的窗口,但是我希望能够每5分钟输出一次结果(窗口数据还没全部到达,先输出当前已经聚合的结果),该怎么办? |
hi:
你可以自定义一个trigger [1] 第二个场景是可以的,第一种场景我没有遇到过这种场景,你可以试试。 https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html flink小猪 <[hidden email]> 于2020年3月27日周五 上午11:29写道: > 我有两个需求 > 1.如果我需要开一个一分钟的窗口,但是我希望能够每5分钟输出一次结果(输出每分钟的聚合结果,即输出5行聚合结果),该怎么办? > 2.如果我需要开一个一个小时的窗口,但是我希望能够每5分钟输出一次结果(窗口数据还没全部到达,先输出当前已经聚合的结果),该怎么办? |
Hi,
For #1: 创建级联的两级window: - 1分钟窗口 - 5分钟窗口,计算只是保存数据,发送明细数据结果 Best, Jingsong Lee |
Hi,
对于第二个场景,可以尝试一下fast emit: table.exec.emit.early-fire.enabled = true table.exec.emit.early-fire.delay = 5min PS: 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature 2. window加了emit之后,会由原来输出append结果变成输出retract结果 Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > Hi, > > For #1: > 创建级联的两级window: > - 1分钟窗口 > - 5分钟窗口,计算只是保存数据,发送明细数据结果 > > Best, > Jingsong Lee > -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [hidden email]; [hidden email] |
Administrator
|
Benchao 可以啊。这么隐秘的实验性功能都被你发现了 :D
On Fri, 27 Mar 2020 at 15:24, Benchao Li <[hidden email]> wrote: > Hi, > > 对于第二个场景,可以尝试一下fast emit: > table.exec.emit.early-fire.enabled = true > table.exec.emit.early-fire.delay = 5min > > PS: > 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature > 2. window加了emit之后,会由原来输出append结果变成输出retract结果 > > Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > > > Hi, > > > > For #1: > > 创建级联的两级window: > > - 1分钟窗口 > > - 5分钟窗口,计算只是保存数据,发送明细数据结果 > > > > Best, > > Jingsong Lee > > > > > -- > > Benchao Li > School of Electronics Engineering and Computer Science, Peking University > Tel:+86-15650713730 > Email: [hidden email]; [hidden email] > |
In reply to this post by 丁浩浩
第一个场景: 从SQL的角度,增加时间字段精确到分钟为key,格式如yyyy-MM-dd HH:mm。这样是不是就可以实现你要到效果了。
flink小猪 <[hidden email]> 于2020年3月27日周五 上午11:29写道: > 我有两个需求 > 1.如果我需要开一个一分钟的窗口,但是我希望能够每5分钟输出一次结果(输出每分钟的聚合结果,即输出5行聚合结果),该怎么办? > 2.如果我需要开一个一个小时的窗口,但是我希望能够每5分钟输出一次结果(窗口数据还没全部到达,先输出当前已经聚合的结果),该怎么办? -- ************************************** tivanli ************************************** |
In reply to this post by Jark
Jark, 这个功能我们用的还挺多的~
现在还有个痛点是window operator不支持retract输入,所以用了emit就没有办法做到窗口级联使用了。 Jark Wu <[hidden email]> 于2020年3月27日周五 下午8:01写道: > Benchao 可以啊。这么隐秘的实验性功能都被你发现了 :D > > On Fri, 27 Mar 2020 at 15:24, Benchao Li <[hidden email]> wrote: > > > Hi, > > > > 对于第二个场景,可以尝试一下fast emit: > > table.exec.emit.early-fire.enabled = true > > table.exec.emit.early-fire.delay = 5min > > > > PS: > > 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature > > 2. window加了emit之后,会由原来输出append结果变成输出retract结果 > > > > Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > > > > > Hi, > > > > > > For #1: > > > 创建级联的两级window: > > > - 1分钟窗口 > > > - 5分钟窗口,计算只是保存数据,发送明细数据结果 > > > > > > Best, > > > Jingsong Lee > > > > > > > > > -- > > > > Benchao Li > > School of Electronics Engineering and Computer Science, Peking University > > Tel:+86-15650713730 > > Email: [hidden email]; [hidden email] > > > -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [hidden email]; [hidden email] |
In reply to this post by Benchao Li
感谢您的回复,我试了一下,的确通过您说的这种方式,可以得到一个retract流的数据。换一个场景 我需要每小时计算当天的交易额(例如两点到了,我应该输出从0点到2点的总交易额)我想获得如下结果: 2020-03-28T01:00 100 2020-03-28T02:00 280 .... 2020-03-28T23:00 18000 2020-03-28T00:00 19520 2020-03-29T01:00 120 2020-03-29T01:00 230 我应该获得是一个不断append的数据流,而不是retract数据流。 并且设置提前发射的事件,flink应该是选取的处理时间而不是事件时间? 在 2020-03-27 15:23:39,"Benchao Li" <[hidden email]> 写道: >Hi, > >对于第二个场景,可以尝试一下fast emit: >table.exec.emit.early-fire.enabled = true >table.exec.emit.early-fire.delay = 5min > >PS: >1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature >2. window加了emit之后,会由原来输出append结果变成输出retract结果 > >Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > >> Hi, >> >> For #1: >> 创建级联的两级window: >> - 1分钟窗口 >> - 5分钟窗口,计算只是保存数据,发送明细数据结果 >> >> Best, >> Jingsong Lee >> > > >-- > >Benchao Li >School of Electronics Engineering and Computer Science, Peking University >Tel:+86-15650713730 >Email: [hidden email]; [hidden email] |
Hi,
这个输出是retract的是by design的,你可以自己改造下sink,来输出你想要的结果。 fast emit是按照处理时间来提前输出的。比如某个key下面来了第一条数据之后,开始设置一个固定周期的定时,如果下个周期聚合结果有发生变化,则输出。 flink小猪 <[hidden email]> 于2020年3月28日周六 下午8:25写道: > > > > 感谢您的回复,我试了一下,的确通过您说的这种方式,可以得到一个retract流的数据。换一个场景 > 我需要每小时计算当天的交易额(例如两点到了,我应该输出从0点到2点的总交易额)我想获得如下结果: > 2020-03-28T01:00 100 > 2020-03-28T02:00 280 > .... > 2020-03-28T23:00 18000 > 2020-03-28T00:00 19520 > 2020-03-29T01:00 120 > 2020-03-29T01:00 230 > 我应该获得是一个不断append的数据流,而不是retract数据流。 > 并且设置提前发射的事件,flink应该是选取的处理时间而不是事件时间? > > > > > > > > > 在 2020-03-27 15:23:39,"Benchao Li" <[hidden email]> 写道: > >Hi, > > > >对于第二个场景,可以尝试一下fast emit: > >table.exec.emit.early-fire.enabled = true > >table.exec.emit.early-fire.delay = 5min > > > >PS: > >1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature > >2. window加了emit之后,会由原来输出append结果变成输出retract结果 > > > >Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > > > >> Hi, > >> > >> For #1: > >> 创建级联的两级window: > >> - 1分钟窗口 > >> - 5分钟窗口,计算只是保存数据,发送明细数据结果 > >> > >> Best, > >> Jingsong Lee > >> > > > > > >-- > > > >Benchao Li > >School of Electronics Engineering and Computer Science, Peking University > >Tel:+86-15650713730 > >Email: [hidden email]; [hidden email] > -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [hidden email]; [hidden email] |
哈哈,学习了,Benchao,👍
Benchao Li <[hidden email]> 于2020年3月28日周六 下午11:26写道: > Hi, > > 这个输出是retract的是by design的,你可以自己改造下sink,来输出你想要的结果。 > fast > emit是按照处理时间来提前输出的。比如某个key下面来了第一条数据之后,开始设置一个固定周期的定时,如果下个周期聚合结果有发生变化,则输出。 > > flink小猪 <[hidden email]> 于2020年3月28日周六 下午8:25写道: > > > > > > > > > 感谢您的回复,我试了一下,的确通过您说的这种方式,可以得到一个retract流的数据。换一个场景 > > 我需要每小时计算当天的交易额(例如两点到了,我应该输出从0点到2点的总交易额)我想获得如下结果: > > 2020-03-28T01:00 100 > > 2020-03-28T02:00 280 > > .... > > 2020-03-28T23:00 18000 > > 2020-03-28T00:00 19520 > > 2020-03-29T01:00 120 > > 2020-03-29T01:00 230 > > 我应该获得是一个不断append的数据流,而不是retract数据流。 > > 并且设置提前发射的事件,flink应该是选取的处理时间而不是事件时间? > > > > > > > > > > > > > > > > > > 在 2020-03-27 15:23:39,"Benchao Li" <[hidden email]> 写道: > > >Hi, > > > > > >对于第二个场景,可以尝试一下fast emit: > > >table.exec.emit.early-fire.enabled = true > > >table.exec.emit.early-fire.delay = 5min > > > > > >PS: > > >1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature > > >2. window加了emit之后,会由原来输出append结果变成输出retract结果 > > > > > >Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > > > > > >> Hi, > > >> > > >> For #1: > > >> 创建级联的两级window: > > >> - 1分钟窗口 > > >> - 5分钟窗口,计算只是保存数据,发送明细数据结果 > > >> > > >> Best, > > >> Jingsong Lee > > >> > > > > > > > > >-- > > > > > >Benchao Li > > >School of Electronics Engineering and Computer Science, Peking > University > > >Tel:+86-15650713730 > > >Email: [hidden email]; [hidden email] > > > > > -- > > Benchao Li > School of Electronics Engineering and Computer Science, Peking University > Tel:+86-15650713730 > Email: [hidden email]; [hidden email] > |
In reply to this post by Benchao Li
我们也经常有固定窗口定期触发的需求,但是添加以下参数并没有得到预期的效果(10秒的窗口,期待每秒都输出结果),是我的使用方法不对还是其他问题呢?多谢各位,下面是伪代码:
public class EarlyEmitter { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlink StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, settings); tEnv.getConfig().getConfiguration().setBoolean("table.exec.emit.early-fire.enabled", true); tEnv.getConfig().getConfiguration().setString("table.exec.emit.early-fire.delay", "1000 ms"); Table table = tEnv.fromDataStream( env.addSource(new SourceData()), "generate_time, name, city, id, event_time.proctime"); tEnv.createTemporaryView("person", table); String emit = "SELECT name, COUNT(DISTINCT id)" + "FROM person " + "GROUP BY TUMBLE(event_time, interval '10' second), name"; Table result = tEnv.sqlQuery(emit); tEnv.toRetractStream(result, Row.class).print(); env.execute("IncrementalGrouping"); } private static final class SourceData implements SourceFunction<Tuple4<Long, String, String, Long>> { @Override public void run(SourceContext<Tuple4<Long, String, String, Long>> ctx) throws Exception { while (true) { long time = System.currentTimeMillis(); ctx.collect(Tuple4.of(time, "flink", "bj", 1L)); } } @Override public void cancel() { } } } > 2020年3月27日 下午3:23,Benchao Li <[hidden email]> 写道: > > Hi, > > 对于第二个场景,可以尝试一下fast emit: > table.exec.emit.early-fire.enabled = true > table.exec.emit.early-fire.delay = 5min > > PS: > 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature > 2. window加了emit之后,会由原来输出append结果变成输出retract结果 > > Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > >> Hi, >> >> For #1: >> 创建级联的两级window: >> - 1分钟窗口 >> - 5分钟窗口,计算只是保存数据,发送明细数据结果 >> >> Best, >> Jingsong Lee >> > > > -- > > Benchao Li > School of Electronics Engineering and Computer Science, Peking University > Tel:+86-15650713730 > Email: [hidden email]; [hidden email] |
Hi 建刚,
现在Emit的原理是这样子的: - *当某个key*下面来了第一条数据的时候,注册一个emit delay之后的*处理时间定时器*; - 当定时器到了的时候, - 检查当前的key下的聚合结果跟上次输出的结果是否有变化, - 如果有变化,就发送-[old], +[new] 两条结果到下游; - 如果是*没有变化,则不做任何处理*; - 再次注册一个新的emit delay之后的处理时间定时器。 你可以根据这个原理,再对照下你的数据,看看是否符合预期。 刘建刚 <[hidden email]> 于2020年4月15日周三 下午3:32写道: > > 我们也经常有固定窗口定期触发的需求,但是添加以下参数并没有得到预期的效果(10秒的窗口,期待每秒都输出结果),是我的使用方法不对还是其他问题呢?多谢各位,下面是伪代码: > > public class EarlyEmitter { > public static void main(String[] args) throws Exception { > StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); > env.setParallelism(1); > > EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlink > > StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, settings) > ; > > tEnv.getConfig().getConfiguration().setBoolean( > "table.exec.emit.early-fire.enabled", true); > tEnv.getConfig().getConfiguration().setString( > "table.exec.emit.early-fire.delay", "1000 ms"); > > Table table = tEnv.fromDataStream( > env.addSource(new SourceData()), "generate_time, name, city, id, > event_time.proctime"); > tEnv.createTemporaryView("person", table); > > String emit = > "SELECT name, COUNT(DISTINCT id)" + > "FROM person " + > "GROUP BY TUMBLE(event_time, interval '10' second), name"; > > Table result = tEnv.sqlQuery(emit); > tEnv.toRetractStream(result, Row.class).print(); > > env.execute("IncrementalGrouping"); > } > > private static final class SourceData implements > SourceFunction<Tuple4<Long, String, String, Long>> { > @Override > public void run(SourceContext<Tuple4<Long, String, String, Long>> ctx) throws > Exception { > while (true) { > long time = System.currentTimeMillis(); > ctx.collect(Tuple4.of(time, "flink", "bj", 1L)); > } > } > > @Override > public void cancel() { > > } > } > } > > > > > > 2020年3月27日 下午3:23,Benchao Li <[hidden email]> 写道: > > Hi, > > 对于第二个场景,可以尝试一下fast emit: > table.exec.emit.early-fire.enabled = true > table.exec.emit.early-fire.delay = 5min > > PS: > 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature > 2. window加了emit之后,会由原来输出append结果变成输出retract结果 > > Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: > > Hi, > > For #1: > 创建级联的两级window: > - 1分钟窗口 > - 5分钟窗口,计算只是保存数据,发送明细数据结果 > > Best, > Jingsong Lee > > > > -- > > Benchao Li > School of Electronics Engineering and Computer Science, Peking University > Tel:+86-15650713730 > Email: [hidden email] <[hidden email]>; [hidden email] > > > -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [hidden email]; [hidden email] |
感谢 Benchao,问题应解决了!
> 2020年4月15日 下午3:38,Benchao Li <[hidden email]> 写道: > > Hi 建刚, > > 现在Emit的原理是这样子的: > - 当某个key下面来了第一条数据的时候,注册一个emit delay之后的处理时间定时器; > - 当定时器到了的时候, > - 检查当前的key下的聚合结果跟上次输出的结果是否有变化, > - 如果有变化,就发送-[old], +[new] 两条结果到下游; > - 如果是没有变化,则不做任何处理; > - 再次注册一个新的emit delay之后的处理时间定时器。 > > 你可以根据这个原理,再对照下你的数据,看看是否符合预期。 > > 刘建刚 <[hidden email] <mailto:[hidden email]>> 于2020年4月15日周三 下午3:32写道: > 我们也经常有固定窗口定期触发的需求,但是添加以下参数并没有得到预期的效果(10秒的窗口,期待每秒都输出结果),是我的使用方法不对还是其他问题呢?多谢各位,下面是伪代码: > > public class EarlyEmitter { > public static void main(String[] args) throws Exception { > StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); > env.setParallelism(1); > > EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlink > StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, settings); > > tEnv.getConfig().getConfiguration().setBoolean("table.exec.emit.early-fire.enabled", true); > tEnv.getConfig().getConfiguration().setString("table.exec.emit.early-fire.delay", "1000 ms"); > > Table table = tEnv.fromDataStream( > env.addSource(new SourceData()), "generate_time, name, city, id, event_time.proctime"); > tEnv.createTemporaryView("person", table); > > String emit = > "SELECT name, COUNT(DISTINCT id)" + > "FROM person " + > "GROUP BY TUMBLE(event_time, interval '10' second), name"; > > Table result = tEnv.sqlQuery(emit); > tEnv.toRetractStream(result, Row.class).print(); > > env.execute("IncrementalGrouping"); > } > > private static final class SourceData implements SourceFunction<Tuple4<Long, String, String, Long>> { > @Override > public void run(SourceContext<Tuple4<Long, String, String, Long>> ctx) throws Exception { > while (true) { > long time = System.currentTimeMillis(); > ctx.collect(Tuple4.of(time, "flink", "bj", 1L)); > } > } > > @Override > public void cancel() { > > } > } > } > > > > >> 2020年3月27日 下午3:23,Benchao Li <[hidden email] <mailto:[hidden email]>> 写道: >> >> Hi, >> >> 对于第二个场景,可以尝试一下fast emit: >> table.exec.emit.early-fire.enabled = true >> table.exec.emit.early-fire.delay = 5min >> >> PS: >> 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature >> 2. window加了emit之后,会由原来输出append结果变成输出retract结果 >> >> Jingsong Li <[hidden email] <mailto:[hidden email]>> 于2020年3月27日周五 下午2:51写道: >> >>> Hi, >>> >>> For #1: >>> 创建级联的两级window: >>> - 1分钟窗口 >>> - 5分钟窗口,计算只是保存数据,发送明细数据结果 >>> >>> Best, >>> Jingsong Lee >>> >> >> >> -- >> >> Benchao Li >> School of Electronics Engineering and Computer Science, Peking University >> Tel:+86-15650713730 >> Email: [hidden email] <mailto:[hidden email]>; [hidden email] <mailto:[hidden email]> > > > > -- > Benchao Li > School of Electronics Engineering and Computer Science, Peking University > Tel:+86-15650713730 > Email: [hidden email] <mailto:[hidden email]>; [hidden email] <mailto:[hidden email]> |
非常开心能够帮助到你~
刘建刚 <[hidden email]> 于2020年4月15日周三 下午3:57写道: > 感谢 Benchao,问题应解决了! > > 2020年4月15日 下午3:38,Benchao Li <[hidden email]> 写道: > > Hi 建刚, > > 现在Emit的原理是这样子的: > - *当某个key*下面来了第一条数据的时候,注册一个emit delay之后的*处理时间定时器*; > - 当定时器到了的时候, > - 检查当前的key下的聚合结果跟上次输出的结果是否有变化, > - 如果有变化,就发送-[old], +[new] 两条结果到下游; > - 如果是*没有变化,则不做任何处理*; > - 再次注册一个新的emit delay之后的处理时间定时器。 > > 你可以根据这个原理,再对照下你的数据,看看是否符合预期。 > > 刘建刚 <[hidden email]> 于2020年4月15日周三 下午3:32写道: > >> >> 我们也经常有固定窗口定期触发的需求,但是添加以下参数并没有得到预期的效果(10秒的窗口,期待每秒都输出结果),是我的使用方法不对还是其他问题呢?多谢各位,下面是伪代码: >> >> public class EarlyEmitter { >> public static void main(String[] args) throws Exception { >> StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); >> env.setParallelism(1); >> >> EnvironmentSettings settings = EnvironmentSettings.newInstance().useBlink >> >> StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, >> settings); >> >> tEnv.getConfig().getConfiguration().setBoolean( >> "table.exec.emit.early-fire.enabled", true); >> tEnv.getConfig().getConfiguration().setString( >> "table.exec.emit.early-fire.delay", "1000 ms"); >> >> Table table = tEnv.fromDataStream( >> env.addSource(new SourceData()), "generate_time, name, city, id, >> event_time.proctime"); >> tEnv.createTemporaryView("person", table); >> >> String emit = >> "SELECT name, COUNT(DISTINCT id)" + >> "FROM person " + >> "GROUP BY TUMBLE(event_time, interval '10' second), name"; >> >> Table result = tEnv.sqlQuery(emit); >> tEnv.toRetractStream(result, Row.class).print(); >> >> env.execute("IncrementalGrouping"); >> } >> >> private static final class SourceData implements >> SourceFunction<Tuple4<Long, String, String, Long>> { >> @Override >> public void run(SourceContext<Tuple4<Long, String, String, Long>> ctx) throws >> Exception { >> while (true) { >> long time = System.currentTimeMillis(); >> ctx.collect(Tuple4.of(time, "flink", "bj", 1L)); >> } >> } >> >> @Override >> public void cancel() { >> >> } >> } >> } >> >> >> >> >> >> 2020年3月27日 下午3:23,Benchao Li <[hidden email]> 写道: >> >> Hi, >> >> 对于第二个场景,可以尝试一下fast emit: >> table.exec.emit.early-fire.enabled = true >> table.exec.emit.early-fire.delay = 5min >> >> PS: >> 1. 这个feature并没有在官方文档里面写出来,目前应该是一个实验性质的feature >> 2. window加了emit之后,会由原来输出append结果变成输出retract结果 >> >> Jingsong Li <[hidden email]> 于2020年3月27日周五 下午2:51写道: >> >> Hi, >> >> For #1: >> 创建级联的两级window: >> - 1分钟窗口 >> - 5分钟窗口,计算只是保存数据,发送明细数据结果 >> >> Best, >> Jingsong Lee >> >> >> >> -- >> >> Benchao Li >> School of Electronics Engineering and Computer Science, Peking University >> Tel:+86-15650713730 >> Email: [hidden email] <[hidden email]>; [hidden email] >> >> >> > > -- > > Benchao Li > School of Electronics Engineering and Computer Science, Peking University > Tel:+86-15650713730 > Email: [hidden email]; [hidden email] > > > -- Benchao Li School of Electronics Engineering and Computer Science, Peking University Tel:+86-15650713730 Email: [hidden email]; [hidden email] |
In reply to this post by liujiangang
|
可以具体描述下你的问题么,没太看懂你的问题。
smallwong <[hidden email]> 于2020年10月14日周三 下午6:57写道: > 哈喽,请问是做了什么调整?才10秒的窗口,期待每秒都输出结果的 > > > > -- > Sent from: http://apache-flink.147419.n8.nabble.com/ -- Best, Benchao Li |
Free forum by Nabble | Edit this page |