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``` 12* ```/*设置并行度为5*/val env = StreamExecutionEnvironment.createLocalEnvironment(5)- 1val 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)