一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?

关键字

flink pyflink alink(pyalink)
Source Sink Batch Stream
DataFrame DataStream
Oprator算子 -
Connector
benv - BatchExecutionEnvironment btenv - BatchTableEnvironment
senv - StreamExecutionEnvironment stenv - StreamTableEnvironment

UDF - User Define Function


理念

2015年Google Dataflow 论文:a practical approach to balancing correctness, latency, and cost in massive-scale, unbounded, out-of-order data processing
unbounded/bounded 边界 批处理是流处理的特例
在 Flink 设计之初流处理应用和批处理应用尽管底层都是流处理,但在编程 API 上是分开的。

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第1张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第2张图片


版本演进

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第3张图片


使用场景

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第4张图片

Pyflink系统架构

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第5张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第6张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第7张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第8张图片
注:
1、pyflink 1.12中 Table API 基本对齐了Java的所有功能
2、DataStream API 到 1.13 将补齐缺少的大步幅功能
3、如果项目重点偏向AI,建议使用python作为开发语言,选择flink1.13作为支持引擎
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第9张图片

Pyflink Table API

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第10张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第11张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第12张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第13张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第14张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第15张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第16张图片

Pyflink DataStream API

from pyflink.common import WatermarkStrategy, Row
from pyflink.common.typeinfo import Types
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.datastream.connectors import NumberSequenceSource
from pyflink.datastream.functions import RuntimeContext, MapFunction
from pyflink.datastream.state import ValueStateDescriptor


class MyMapFunction(MapFunction):

    def open(self, runtime_context: RuntimeContext):
        state_desc = ValueStateDescriptor('cnt', Types.LONG())
        # 定义value state
        self.cnt_state = runtime_context.get_state(state_desc)

    def map(self, value):
        cnt = self.cnt_state.value()
        if cnt is None:
            cnt = 0

        new_cnt = cnt + 1
        self.cnt_state.update(new_cnt)
        return value[0], new_cnt


def state_access_demo():
    # 1. 创建 StreamExecutionEnvironment
    env = StreamExecutionEnvironment.get_execution_environment()

    # 2. 创建数据源
    seq_num_source = NumberSequenceSource(1, 100)
    ds = env.from_source(
        source=seq_num_source,
        watermark_strategy=WatermarkStrategy.for_monotonous_timestamps(),
        source_name='seq_num_source',
        type_info=Types.LONG())

    # 3. 定义执行逻辑
    ds = ds.map(lambda a: Row(a % 4, 1), output_type=Types.ROW([Types.LONG(), Types.LONG()])) \
           .key_by(lambda a: a[0]) \
           .map(MyMapFunction(), output_type=Types.TUPLE([Types.LONG(), Types.LONG()]))

    # 4. 将打印结果数据
    ds.print()

    # 5. 执行作业
    env.execute()


if __name__ == '__main__':
    state_access_demo()

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第17张图片
一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第18张图片

Alink功能架构

一、一文搞懂什么是flink?flink版本怎么选?flink与pylink、alink之间的关系?_第19张图片

Alink系统架构

你可能感兴趣的:(flink,flink,自然语言处理,人工智能,alink)