Flink - 构建算子图
Flink - Building the operator graph
大家早上好,
我已经使用 Apache Storm 构建了拓扑,我发现它们公开的 API 的一个好处是可以 "manually" 连接图形拓扑中的运算符。
例如,您可以创建循环。
我想知道在 Flink 中是否有实现相同 "expressivity" 的最佳实践。
非常感谢!
Flink 不支持循环拓扑。您可以通过特定的运算符执行迭代。除了循环,您可以通过标准 API 定义图形,与 Spark 等相比,它相当灵活。许多 DataSet 和 DataStream API 都接受 类 的函数和自定义实现,例如 RichMapFunction
、RichFlatMapFunction
等等。这提供了极大程度的灵活性和可定制性以及模块化和可重用性。超越标准 API 并学习如何正确自定义 Flink 作业需要一些时间,但这是值得的。
Flink 有一个 "easy-mode",类似于 Spark 的 API,您可以在其中完成大部分需要的工作。当你想表达超出标准 API 范围和用例的东西时,你可以直接使用部分低于标准 API 的层,而不是像在 Spark 中那样做奇怪的变通方法=18=]。您可以扩展和自定义许多部分,然后插入所提供的 operators/triggers/sources/sinks 等位置。这主要是逐个记录的。
大家早上好,
我已经使用 Apache Storm 构建了拓扑,我发现它们公开的 API 的一个好处是可以 "manually" 连接图形拓扑中的运算符。
例如,您可以创建循环。
我想知道在 Flink 中是否有实现相同 "expressivity" 的最佳实践。
非常感谢!
Flink 不支持循环拓扑。您可以通过特定的运算符执行迭代。除了循环,您可以通过标准 API 定义图形,与 Spark 等相比,它相当灵活。许多 DataSet 和 DataStream API 都接受 类 的函数和自定义实现,例如 RichMapFunction
、RichFlatMapFunction
等等。这提供了极大程度的灵活性和可定制性以及模块化和可重用性。超越标准 API 并学习如何正确自定义 Flink 作业需要一些时间,但这是值得的。
Flink 有一个 "easy-mode",类似于 Spark 的 API,您可以在其中完成大部分需要的工作。当你想表达超出标准 API 范围和用例的东西时,你可以直接使用部分低于标准 API 的层,而不是像在 Spark 中那样做奇怪的变通方法=18=]。您可以扩展和自定义许多部分,然后插入所提供的 operators/triggers/sources/sinks 等位置。这主要是逐个记录的。