DataStream API 一 之 DataStream 编程模型
一.DataSource
1.1 内部数据源
1.1.1 文件 数据源
val textStream =env.readTextFile("/User/local/data_example.log")
1.1.2 Socket 数据源
val sockectDataStream =env.socketTextStream("localhost",9999)
1.1.3 集合 数据源
//fromElements
val dataStream =env.fromElements(Tuple2(1L,3L),Tuple2(1L,5L),Tuple2(1L,7L),Tuple2(1L,4L),Tuple2(1L,2L))
//fromCollection
String[] elements =new String[]{
"hello","flink"};
DataStream<String> dataStream =env.fromCollection(Arrays.asList(elements));
1.2 外部数据源
1.2.1 数据源连接器
通过StreamExecutionEnvironment.addSource(sourceFunction)来为你的程序添加一个官方提供的source。
官方内置Connectors有如下:
• Kafka
• Elasticsearch
• Hadoop FileSystem
• RabbitMQ
• Apache ActiveMQ
• Redis
1.2.2 自定义数据源连接器
① 通过实现sourceFunction接口来自定义无并行度的source
② 也可以通过实现ParallelSourceFunction 接口 or 继承RichParallelSourceFunction 来自定义有并行度的source
二.DataStream Translate
2.1 Single-DataStrem
2.1.1 Map
[DataStream -> DataStream]
val dataStream =env.fromElements(("a",3),("d",4),("c",2),("c",5),("a",5))
val mapStream:DataStream[(String,Int)]=dataStream.map(t=>(t._1,t._2+1))
2.1.2 FlatMap
[DataStream -> DataStream]
val resultStream[String]=dataStream.flatMap{
str => str.split(" ")}
2.1.3 Filter
[DataStream -> DataStream]
val filter:DataStream[Int]=dataStream.fliter{
_ %2 == 0 }
val filter:DataStream[Int]=dataStream.fliter{
x => x %</