我是Apache Flink的新手,并且想了解DataStream和Table API之间的用例。请帮助我了解何时选择Table API而不是DataStream API。
据我了解,使用Table API可以完成的事情也可以使用DataStream API来完成。两种API有何不同?
答案 0 :(得分:3)
Table API是一个关系API,用于统一批处理和流处理。可以在静态批处理数据或连续流数据上运行相同的查询。 Table API与SQL相似。优化查询并将其转换为DataSet(批处理)或DataStream(流式处理)程序,即Table API查询作为DataStream程序执行。您可以在用户定义的函数中实现很多自定义逻辑,但是Table API围绕关系操作(过滤器,投影,联接,聚合)而集中。因此,Table API主要用于ETL /数据管道或数据分析应用程序也就不足为奇了。
DataStream API是用于实现流处理应用程序的API,并且更为通用。大多数逻辑是作为Java或Scala类实现的。流程函数公开时间和状态,这是任何类型的流应用程序的基本构建块。除了数据管道和分析之外,您还可以使用DataStream API实施事件驱动的应用程序。
如果可以使用Table API实现逻辑,那就去吧。该程序将更容易,更简洁。如果您需要更多控制权并具有大量自定义逻辑,请使用DataStream API。顺便说一下,由于DataStream
可以轻松转换为Table
,反之亦然,因此您可以轻松地混合使用这两个API。