This commit is contained in:
罗祥
2019-11-05 21:28:16 +08:00
parent 0d5a81bc7c
commit ad59022c08
22 changed files with 262 additions and 416 deletions

View File

@@ -13,7 +13,7 @@
## 一、内置 Data Source
Flink Data Source 用于定义 Flink 程序的数据来源Flink 官方内置提供了多种数据获取方法,用于帮助开发者简单快速地构建输入流,具体如下:
Flink Data Source 用于定义 Flink 程序的数据来源Flink 官方提供了多种数据获取方法,用于帮助开发者简单快速地构建输入流,具体如下:
### 1.1 基于文件构建
@@ -29,7 +29,7 @@ env.readTextFile(filePath).print();
+ **inputFormat**:数据流的输入格式。
+ **filePath**:文件路径,可以是本地文件系统上的路径,也可以是 HDFS 上的文件路径。
+ **watchType**:读取方式,它有两个可选值,分别是 `FileProcessingMode.PROCESS_ONCE``FileProcessingMode.PROCESS_CONTINUOUSLY`:前者表示对指定路径上的数据只读取一次,然后退出;后者表示对路径进行定期扫描从而可以获取到新的数据。需要注意的是如果 watchType 被设置为 `PROCESS_CONTINUOUSLY`,那么当文件被修改时,其所有的内容 (包含原有的内容和新增的内容) 都将被重新处理,因此这会打破 Flink 的 *exactly-once* 语义。
+ **watchType**:读取方式,它有两个可选值,分别是 `FileProcessingMode.PROCESS_ONCE``FileProcessingMode.PROCESS_CONTINUOUSLY`:前者表示对指定路径上的数据只读取一次,然后退出;后者表示对路径进行定期扫描和读取。需要注意的是如果 watchType 被设置为 `PROCESS_CONTINUOUSLY`,那么当文件被修改时,其所有的内容 (包含原有的内容和新增的内容) 都将被重新处理,因此这会打破 Flink 的 *exactly-once* 语义。
+ **interval**:定期扫描的时间间隔。
+ **typeInformation**:输入流中元素的类型。
@@ -102,7 +102,7 @@ Flink 提供了 socketTextStream 方法用于构建基于 Socket 的数据流,
- **hostname**:主机名;
- **port**:端口号,设置为 0 时,表示端口号自动分配;
- **delimiter**:用于分隔每条记录的分隔符;
- **maxRetry**:当 Socket 临时关闭时,程序的最大重试间隔,单位为秒。设置为 0 时表示不进行重试;设置为负值则表示一直重试。使用示例如下:
- **maxRetry**:当 Socket 临时关闭时,程序的最大重试间隔,单位为秒。设置为 0 时表示不进行重试;设置为负值则表示一直重试。示例如下:
```shell
env.socketTextStream("192.168.0.229", 9999, "\n", 3).print();
@@ -151,7 +151,6 @@ Exception in thread "main" java.lang.IllegalArgumentException: Source: 1 is not
如果你想要实现具有并行度的输入流,则需要实现 ParallelSourceFunction 或 RichParallelSourceFunction 接口,其与 SourceFunction 的关系如下图:
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/flink-RichParallelSourceFunction.png"/> </div>
ParallelSourceFunction 直接继承自 ParallelSourceFunction具有并行度的功能。RichParallelSourceFunction 则继承自 AbstractRichFunction同时实现了 ParallelSourceFunction 接口,所以其除了具有并行度的功能外,还提供了额外的与生命周期相关的方法,如 open() closen() 。
## 三、Streaming Connectors
@@ -267,11 +266,9 @@ bin/kafka-console-producer.sh --broker-list hadoop001:9092 --topic flink-stream-
在 Producer 上输入任意测试数据,之后观察程序控制台的输出:
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/flink-kafka-datasource-producer.png"/> </div>
程序控制台的输出如下:
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/flink-kafka-datasource-console.png"/> </div>
可以看到已经成功接收并打印出相关的数据。