Apache flink 在Flink中的范例之间移动数据

Apache flink 在Flink中的范例之间移动数据,apache-flink,Apache Flink,我在关系数据库中有一些批处理数据,我想使用Flink将这些数据推送到消息总线。由于Flink同时支持批处理和流式范例,因此它似乎是一个很好的选择。话虽如此,我无法判断此任务是属于StreamingJob还是BatchJob,以及如何将两者连接起来。此任务是否更适合FlinkSQL环境 这可能吗?我需要知道什么?这实际上取决于您实际想要做什么,数据的大小等等。如果您只想从数据库中读取数据并将其写成Kafka,那么您可能需要看看flink,因为它已经实现了JDBC的源代码 从技术上讲,您可以使用Da

我在关系数据库中有一些批处理数据,我想使用Flink将这些数据推送到消息总线。由于Flink同时支持批处理和流式范例,因此它似乎是一个很好的选择。话虽如此,我无法判断此任务是属于StreamingJob还是BatchJob,以及如何将两者连接起来。此任务是否更适合FlinkSQL环境


这可能吗?我需要知道什么?

这实际上取决于您实际想要做什么,数据的大小等等。如果您只想从数据库中读取数据并将其写成Kafka,那么您可能需要看看flink,因为它已经实现了JDBC的源代码

从技术上讲,您可以使用DataStream API,但它没有JDBC源AFAIK,所以这将更加困难,因为您需要自己实现它

通常,Flink有两个主要的API来处理数据,
DataSet
DataStream
,您不能在它们之间进行转换
DataSet
与Spark中的
DataSet
大致相同,因此Flink基本上知道这是有界的、分区的数据,因此您可以对其进行排序或进行其他转换,利用数据具有某个已定义大小的事实

DataStream
是一种流式API,通常允许您处理技术上无限的数据流,您可以使用
DataStream
创建有限流,例如从文件读取。但是,通常在使用
DataStream
处理数据时,您将无法直接对其进行排序,或者在处理
DataSet
时无法执行某些操作,即使流中保存的数据是有限的

因此,对于在范例之间移动数据,您可以编写处理
DataStream
的应用程序,您将能够处理来自Kafka的无限事件流和来自CSV文件的10条记录,Flink将能够根据数据是否有限进行一些优化(在1.12 IIRC中介绍)。但是,如果不做一些额外的工作,例如将数据存储在文件中并将其作为数据流再次读取,您将无法将文件读入
数据集
排序分区,然后将其映射到
数据流

对于该项目为更好地统一批处理和流处理而正在进行的努力,您有相当多的发言权。