Flink SourceDataSources模块定义了DataStream API 中数据输入操作Flink中内置了很多数据源Source例如文件数据源、Socket数据源、集合数据源,同时也支持第三方数据源例如Kafka数据源、自定义数据源下面分别使用DataStream API进行一一演示。File Source以上文件Source除了读取Text数据之外还可以读取avro、csv、json、parquet格式对应文件具体API可以参照官网https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/connectors/datastream/formats/overview/。Socket SourceFlink读取Socket数据在前几个小节中已经演示过这里不再读取Socket中的数据。Socket Source常用于程序测试。集合 SourceFlink可以读取集合中的数据得到DataStream这里我们自定义POJO创建StationLog对象来形成集合数据。StationLog对象Java代码如下Kafka Source读取Kafka中Value数据读取Kafka中Key、Value数据自定义 Source对于一些其他的数据源我们也可以实现自定义Source进行实时数据获取。自定义数据源有两种实现方式通过实现SourceFunction接口来自定义无并行度也就是并行度只能为1的Source。通过实现ParallelSourceFunction 接口或者继承RichParallelSourceFunction 来自定义有并行度的数据源。无论是那种接口实现方式都需要重写以下两个方法run()大部分情况下都需要在run方法中实现一个循环产生数据通过Flink上下文对象传递到下游。cancel():当取消对应的Flink任务时被调用。SourceFunction接口实现实现SourceFunction 接口实现无并行度的自定义Sourcejava代码和Scala代码分别如下ParallelSourceFunction接口实现