Apache Flink -Streaming(DataStream API)
Posted OOFFFF
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Flink -Streaming(DataStream API)相关的知识,希望对你有一定的参考价值。
综述:
- 在Flink中DataStream程序是在数据流上实现了转换的常规程序。
1.示范程序
import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.windowing.time.Time; import org.apache.flink.util.Collector; public class WindowWordCount { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<Tuple2<String, Integer>> dataStream = env .socketTextStream("localhost", 9999) .flatMap(new Splitter()) .keyBy(0) .timeWindow(Time.seconds(5)) .sum(1); dataStream.print(); env.execute("Window WordCount"); } public static class Splitter implements FlatMapFunction<String, Tuple2<String, Integer>> { @Override public void flatMap(String sentence, Collector<Tuple2<String, Integer>> out) throws Exception { for (String word: sentence.split(" ")) { out.collect(new Tuple2<String, Integer>(word, 1)); } } } }
nc -lk 9999
2.数据源
- 程序从源读取输入。可以通过StreamExecutionEnvironment.addSource(sourceFunction)给程序附上源。
- 在StreamExecutionEnvironment中有一些可访问的预定义的流数据源: readTextFile(path) 逐行作为字符串读取文本文件 readFile(fileInputFormat, path) 通过指定的文件输入格式(the specified file input format)读取文件 readFile(fileInputFormat, path, watchType, interval, pathFilter, typeInfo) 这是一个被前两个方法内部调用的方法。它基于给定fileInputFormat在path下读取文件,根据提供的
watchType,这个源会定期监测(每 interval ms)新数据的路径。
- 基于套接字的 socketTextStream 从套接字读取。元素可以由一个分隔符分开。
- 基于集合的 fromCollection(Collection) 从Java Java.util.Collection创建一个数据流,集合中的所有元素必须是相同类型的。 fromCollection(Iterator, Class) 从一个迭代器创建一个数据流,类指定迭代器返回的元素的数据类型。 fromElements(T ...) 从给定的对象的序列创建一个数据流,所有对象必须是相同类型的。 fromParallelCollection(SplittableIterator, Class) 在并行执行中,从一个迭代器创建一个数据流,类指定迭代器返回的元素的数据类型。 generateSequence(from, to) 在给定的时间间隔内,生成的数字序列,并行执行。
- 自定义的 addSource 附上一个新的源函数。例如要从Apache Kafka读取,可以用addSource(new FlinkKafkaConsumer08<>(...))。
3.DataStream Transformations 参照运算符。
4.Data Sinks 数据接收
以上是关于Apache Flink -Streaming(DataStream API)的主要内容,如果未能解决你的问题,请参考以下文章
Apache Flink - 检查点数据大小随着时间的推移而增加
Apache Flink 入门,了解 Apache Flink
Apache Flink 入门,了解 Apache Flink
Apache Flink 入门,了解 Apache Flink