Duncan's Blog

Flink学习记录

Flink笔记

1.数据集类型

  • 有界数据集:具有时间边界,在处理过程中数据一定会在某个时间范围内起始和结束。提供DataSet API
  • 无界数据集: 数据从一开始就一直持续产生的。提供DataStream API

2.Flink编程接口

  • Flink SQL
  • Table API:在内存中的DataSet和DataStream基础上加上Schema信息,将数据类型抽象成表结构
  • DataStream API和DataSet API
  • Stateful Stream Process API

3.程序结构

  • 设定运行环境:

    • env = StreamExecutionEnvironment.getExecutionEnvironment```
      1
      2
      * ```/*设置并行度为5*/val env = StreamExecutionEnvironment.createLocalEnvironment(5)
    • 1
      val env = StreamExecutionEnvironment.createRemoteEnvironment("JobManagerHost",6021,5,"/user/application.jar")
  • 初始化数据:

    将外部数据转换成DataStream或者DataSet

  • 执行转换逻辑:

    • 复杂的逻辑通过实现MapFunction接口,然后调用map()方法将实现类传入
    • 匿名函数
    • RichFunction接口
  • 分区key指定

  • 根据第一个字段分区,根据第二个字段求和

    val result = DataStream.keyBy(0).sum(1)

  • 输出结果

    • 基于文件输出
    • 基于控制台输出
    • Connector
  • 程序触发

    调用ExecutionEnvironment的execute()

4.数据类型

  • 原生数据类型
  • Tuple2元组类型
  • Scala case class类型
  • POJOs类型:复杂数据结构类型
  • Flink Value类型:IntValue、DoubleValue、StringValue
  • 特殊数据类型:List,Map、Etither、Option、Try

5.DataStream API

  • DataSource
    • 内置数据源
      • 文件数据源
      • Socket数据源
      • 集合数据源
    • 外置数据源
      • Kafka
  • Transformation
    • 单DataFrame操作:Map、FlatMap、Filter、KeyBy、Reduce、Aggregation函数(min、max、sum)
    • 多DataFrame操作:Union、Connect、CoMap、CoFlatMap、Split、Select、Iterate
  • DataSink
    • 文件系统
    • Kafka
    • Apache Cassandra
    • HDFS
    • RabbitMQ

6.时间概念

  • Event Time(事件生成时间)
  • Ingestion Time(事件接入时间)
  • Process Time(事件处理时间)

    — 再记录(2019-09-05)

分享