大家早上好,
我已经使用Apache Storm来构建拓扑,我发现他们公开的API的一个好处是可以"手动"连接图拓扑中的操作符。
您可以创建循环,例如:
我想知道是否有一个最佳实践来实现相同的"表现力"在Flink。
非常感谢!
Flink不支持循环拓扑。您可以通过特定的操作符执行迭代。除了循环之外,您可以通过标准API定义图形,与Spark等其他工具相比,它相当灵活。许多数据集和数据流API同时接受RichMapFunction
、RichFlatMapFunction
等类的函数和自定义实现。这提供了很大程度的灵活性和可定制性,以及模块化和可重用性。超越标准API并学习如何正确自定义Flink作业需要一些时间,但这是值得的。
Flink有一个"简单模式",类似于Spark的API,你可以在其中做你需要的大部分事情。当你想表达超出标准API范围和用例的内容时,你可以直接使用一个部分低于标准API的层,而不是像在Spark中那样做一些奇怪的变通。您可以扩展和自定义许多部分,然后插入所提供的操作符/触发器/源/接收器等。