美文网首页
Flink-DataStream API基础编

Flink-DataStream API基础编

作者: 卡门001 | 来源:发表于2021-09-26 20:40 被阅读0次

按三段论顺序

一、得到流式环境

StreamExecutionEnvironment.getExecutionEnvironment()
相应的子api

- createLocalEnvironmentWithWebUI( new Configuration())
- createLocalEnvironment(...) 本地环境
- createRemoteEnvironmen(<host>,<port>,String... jarFiles)

并行序优先级:
自有平行度配置数据高于父亲并行度的设置setParallelism(2);

二、获取源 - Data Source API

关联数据到应用程序 : StreamExecutionEnvironment.addSource(sourceFunction)

sourceFunction

可以自定义编写单例源、并行源或富并行源。

SourceFunctionParallelSourceFunctionRichParallelSourceFunction

自定义sourceFunction
//只支持一个并行度的
env.addSource(new SourceFunction<T>(){
       @Override
       public void run(SourceContext sourceContext) throws Exception {
        
        }

       @Override
       public void cancel() {
       }
});

内置源---pre-implemments

基于文件

env.readTextFile(file)

.readTextFile(rootPath+"example/wordcount.txt");
  • 更多文件读取函数
 readFile(fileInputFormat, path) 
 readFile(fileInputFormat, path, watchType, interval, pathFilter, typeInfo...): 
基于socket

env.socketTextStream(<host>,<port>,",")

基于集合
  • 集合
fromCollection(Collection) - DataStream来自Java.util.Collection. 
fromCollection(Iterator, Class) - DataStream来自java.util.iterator. 
fromElements(T ...) -  元素-对像和须是相同的数据类型
generateSequence(from, to) -- DataStream来自给定的序列化相同对象.
  • 自定义集合
addSource(...)
  • 可并行的数据流
fromParallelCollection(SplittableIterator, Class) -  DataStream来自环境下的
fromParallelCollection(SplittableIterator<OUT> iterator,TypeInformation<OUT>) 
- SplittableIterator:数据源包括在一个切开的迭代器中取中
- TypeInformation:

三、Bundled Connectors实现同第三方工具的集成

  • Kafka(source/sink) - FlinkKafkaConsumer/FlinkKafkaProducer
ip:port、group.id、topic
  • Cassandra(sink)
  • Amazon Kinesis Stream(source/sink)
  • ElasticSearch(sink)
  • 文件系统或HDFS(流与批两种方式,sink)
  • RabbmitMQ(source/sink)
  • Apapche NiFi(source/sink)
  • JDBC(sink)
  • Google PubSub(source/sink)
  • Twitter Streaming API(source)
    ...

四、数据转换 - DataStream Operators

数据转换: Transformation API

1、Map:DataStream -> DataStream

元素一一对应

DataStream<Integer> parsed = input.map(new MapFunction<String, Integer>() {
    @Override
    public Integer map(String value) {
        return Integer.parseInt(value);
    }
});

2. FlatMap : DataStream至DataStream

一个进来,拆解成多个。比如通过,号分割成不同的元素

3. Filter : DataStream至DataStream

满足条件的拉出即可,数据类型不变。

4. KeyBy:DataStream --> KeyedStream

根据关键字进行数据操作

官网例子

5. Reduce:KeyedStream --> DataStream

用于分组之后,做聚合操作、累计操作等

官网例子

6. Aggregations::KeyedStream --> DataStream

聚合操作


官网例子

7. windwos: KeyedStream --> WindowedStream

把排序后的整流按所设定的时间拆解到不同的窗口中,统计分析基于窗口来做运算。

官网例子

8. windwos ALL: DataStream --> AllWindowedStream

将整个流放到一个窗口里。


官网例子

9. windwos Apply:

WindowedStream--> DataStream 与AllWindowedStream -> DataStream


官网例子

10. windwos Reduce: WindowedStream--> DataStream

11. Aggregations on windwos : WindowedStream--> DataStream

官网例子

12. Union: DataStream* 至DataStream

数据合并


官网例子

13. Windows Join: DataStream,DataStream 至DataStream

官网例子

14. Interval Join:KeyedStream ,KeyedStream -> DataStream

和Windows Join类似,但有时间限制


官网例子

14. Windows CoGroup: DataStream,DataStream ->DataStream

官网例子

15. Connect: DataStream,DataStream -> ConnectedDataStreams

16. CoMap,CoFlatMap: ConnectedDataStreams -> DataStream

17. Iterate: DataStream -> IteratorDataStream -> DataStream

相关文章

网友评论

      本文标题:Flink-DataStream API基础编

      本文链接:https://www.haomeiwen.com/subject/bxpwiltx.html