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

@@ -14,8 +14,10 @@
Flink 的 Transformations 操作主要用于将一个和多个 DataStream 按需转换成新的 DataStream。它主要分为以下三类
- **DataStream Transformations**:进行数据流相关转换操作;
- **Physical partitioning**物理分区。Flink 提供的底层 API ,允许用户在必要时可以控制数据的分区规则;
- **Task chaining and resource groups**:任务链和资源组。允许用户进行任务链和资源组相关的细粒度控制。
- **Physical partitioning**物理分区。Flink 提供的底层 API ,允许用户定义数据的分区规则;
- **Task chaining and resource groups**:任务链和资源组。允许用户进行任务链和资源组的细粒度控制。
以下分别对其主要 API 进行介绍:
## 二、DataStream Transformations
@@ -83,7 +85,7 @@ keyedStream.reduce((ReduceFunction<Tuple2<String, Integer>>) (value1, value2) ->
KeyBy 操作存在以下两个限制:
- KeyBy 操作用于用户自定义的 POJOs 类型时,该自定义类型必须重写 hashCode 方法;
- KeyBy 操作不能用于任何数组类型。
- KeyBy 操作不能用于数组类型。
### 2.5 Aggregations [KeyedStream → DataStream]
@@ -173,7 +175,7 @@ split.select("even").print();
### 2.9 project [DataStream → DataStream]
project 主要用于获取 tuples 中的指定字段集,示例如下:
project 主要用于获取 tuples 中的指定字段集,示例如下:
```java
DataStreamSource<Tuple3<String, Integer, String>> streamSource = env.fromElements(
@@ -188,7 +190,7 @@ streamSource.project(0,2).print();
## 三、物理分区
物理分区 (Physical partitioning) 是 Flink 提供的底层的 API用于允许用户采用内置的分区规则或者自定义的分区规则来对数据进行分区,从而避免数据在某些分区上过于倾斜,常用的分区规则如下:
物理分区 (Physical partitioning) 是 Flink 提供的底层的 API允许用户采用内置的分区规则或者自定义的分区规则来对数据进行分区从而避免数据在某些分区上过于倾斜常用的分区规则如下
### 3.1 Random partitioning [DataStream → DataStream]
@@ -219,7 +221,6 @@ ReScale 这个单词具有重新缩放的意义,其对应的操作也是如此
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/flink-Rescaling.png"/> </div>
### 3.4 Broadcasting [DataStream → DataStream]
将数据分发到所有分区上。通常用于小数据集与大数据集进行关联的情况下,此时可以将小数据集广播到所有分区上,避免频繁的跨分区关联,通过 broadcast 方法进行实现: