【问题标题】:Obtain KeyedStream from custom partitioning in Flink从 Flink 中的自定义分区中获取 KeyedStream
【发布时间】:2016-10-18 07:25:25
【问题描述】:

我知道 Flink 带有自定义分区 API。但是,问题在于,在 DataStream 上调用 partitionCustom 后,您会得到 DataStream 而不是 KeyedStream。

另一方面,您不能覆盖KeyedStream 的分区策略。

我确实想使用KeyedStream,因为DataStream 的API 没有reduce 和sum 运算符并且因为自动分区的内部状态。

我的意思是,如果字数是:

words.map(s -> Tuple2.of(s, 1)).keyBy(0).sum(1)

我希望我能写:

words.map(s -> Tuple2.of(s, 1)).partitionCustom(myPartitioner, 0).sum(1)

有没有办法做到这一点?

谢谢!

【问题讨论】:

    标签: apache-flink data-partitioning


    【解决方案1】:

    从 Flink 的文档中(从 1.2.1 版本开始),partitioners 所做的就是根据它们的 key 对数据进行物理分区,只指定它们在机器中物理存储在分区中的位置,实际上并没有对数据进行逻辑分组到键控流。要进行汇总,我们仍然需要使用“keyBy”运算符将它们按键分组,然后我们可以进行“sum”操作。 详情请参考“https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/datastream_api.html#physical-partitioning”:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多