【问题标题】:Apache Beam: What is the difference between DoFn and SimpleFunction?Apache Beam:DoFn 和 SimpleFunction 有什么区别?
【发布时间】:2018-11-04 15:36:54
【问题描述】:

在阅读有关使用 Java 处理 Apache Beam 中的流媒体元素时,我遇到了DoFn<InputT, OutputT>,然后遇到了SimpleFunction<InputT, OutputT>

这两个和我看起来很相似,我很难理解其中的区别。

谁能用通俗的说法解释一下区别?

【问题讨论】:

    标签: java apache-beam


    【解决方案1】:

    从概念上你可以认为SimpleFunctionDoFn 的一个简单案例:

    • SimpleFunction<InputT, OutputT>:

      • 简单的输入到输出的映射函数;
      • 单输入产生单输出;
      • 静态类型,你必须@Overrideapply()方法;
      • 不依赖于计算上下文;
      • 无法使用 Beam 状态 API;
      • 示例用例:MapElements.via(simpleFunction) 一个一个地转换/修改元素,为每个元素生成一个输出;
    • DoFn<InputT, OutputT>:

      • ParDo执行;
      • 暴露于上下文(时间戳、窗口窗格等);
      • 可以消耗侧输入;
      • 可以产生多个输出或根本不产生输出;
      • 可以产生侧面输出;
      • 可以使用 Beam 的持久状态 API;
      • 动态类型;
      • 示例用例:从流中读取对象、过滤、累积它们、执行聚合、转换它们并分派到不同的输出;

    您可以找到ParDos in the dev guide 的更多具体示例和用例。

    This part 提到了MapElements,这是SimpleFunctions 的用例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-04
      • 2015-08-28
      • 2016-06-23
      • 2016-06-05
      • 2015-03-21
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多