【问题标题】:Are the Any Flink Specific Optimizations That Come From the Static Keyword When Calling a Process Function?调用流程函数时是否有来自 static 关键字的任何 Flink 特定优化?
【发布时间】:2020-07-07 17:23:17
【问题描述】:

说明:

流程函数的美妙之处在于它们使我们能够访问键控状态和计时器,这使开发人员能够完全控制输入流中接收到的每个事件。它们工作得很好,几乎可以解决我所有的用例。那我为什么在这里打扰你?公平的问题。 我很好奇是否有任何底层 Flink 性能优化来自使用处理器的静态实现与使用新关键字?

例子:

将静态处理函数应用于键控流

private static final CountWithTimeoutFunction TIMEOUT_COUNT_PROCESSOR = new CountWithTimeoutFunction();

// apply the process function onto a keyed stream
DataStream<Tuple2<String, Long>> result = stream
    .keyBy(0)
    .process(TIMEOUT_COUNT_PROCESSOR);

将非静态处理函数应用于键控流

// apply the process function onto a keyed stream
DataStream<Tuple2<String, Long>> result = stream
    .keyBy(0)
    .process(new CountWithTimeoutFunction());

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    不,没有优化。在这两种情况下,首先构建您的工作流图,然后将其序列化/分发到任务管理器,然后再进行反序列化并开始执行。因此,对函数使用单例并没有什么好处,因为在构建工作流图时,在任何一种情况下都只会创建其中一个。

    【讨论】:

    • 非常感谢!我有一个小小的预感,如果有的话,它不会产生太大的影响,但现在我确定地知道了。
    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 2011-09-05
    • 1970-01-01
    • 2011-06-27
    • 2013-03-18
    • 1970-01-01
    • 2016-10-11
    • 2022-07-21
    相关资源
    最近更新 更多