文章目录
- 1、基于文件
- (1)、readTextFile(path)- TextInputFormat
- (2)、readFile(fileInputFormat, path)
- (3)、(fileInputFormat, path, watchType, interval, pathFilter, typeInfo)
- 2、插座为基础
- socketTextStream
- 3、基于集合
- (1)、fromCollection(Collection)
- (2)、fromCollection(Iterator,Class)
- (3)、fromElements(T ...)
- (4)、fromParallelCollection(SplittableIterator, Class)
- (5)、generateSequence(from, to)
- 4、DataStream转换
- (1)、writeAsText()/ TextOutputFormat
- (2)、writeAsCsv(...)/ CsvOutputFormat
- (3)、print()/ printToErr()
- (4)、writeUsingOutputFormat()/ FileOutputFormat
- (5)、writeToSocket
- (6)、addSink
1、基于文件
(1)、readTextFile(path)- TextInputFormat
逐行读取文本文件,即符合规范的文件,并将他们作为字符串返回。
(2)、readFile(fileInputFormat, path)
按指定的文件输入格式指定读取(一次)文件
(3)、(fileInputFormat, path, watchType, interval, pathFilter, typeInfo)
这是前两个内部调用的方法。它Path根据指定的内容读取文件fileInputFormat。根据提供的内容watchType,此源可以定期监视(每intervalms)新数据
FileProcessingMode.PROCESS_CONTINUOUSLY)的路径,或者处理当前在路径中的数据并退出(FileProcessingMode.PROCESS_ONCE)。使用该pathFilter,用户可以进一步排除正在处理的文件。
2、插座为基础
socketTextStream
从套接字读取,数据元可以用分隔符分隔。
3、基于集合
(1)、fromCollection(Collection)
从Java java.util.Collection创建数据流,集合中的所有数据元必须属于同一类型。
(2)、fromCollection(Iterator,Class)
从迭代器创建数据流,该类指定迭代器返回的数据元的数据类型。
(3)、fromElements(T …)
从给定的对象序列创建数据流,所有对象必须属于同一类型。
(4)、fromParallelCollection(SplittableIterator, Class)
并行的从迭代器创建数据流。该类指定迭代器返回的数据元的数据类型。
(5)、generateSequence(from, to)
并行生成给定间隔中的数字序列。
4、DataStream转换
数据接收器使用DataStream并将他们转发到文件,套接字,外部系统或打印他们,Flink带有各种内置输出格式,这些格式封装在DataStreams上的算子操作后面。
(1)、writeAsText()/ TextOutputFormat
按字符串顺序写入数据元,通过调用每个数据元的toString()方法获得字符串
(2)、writeAsCsv(…)/ CsvOutputFormat
将元组写为逗号分隔值文件,行和字段分隔符是可配置的,每个字段的值来自对象的toString()方法
(3)、print()/ printToErr()
在标准输出/标准错误流上打印每个数据元的toString()值。可选地可以提供前缀(msg)其前缀为输出。这有助于区分不同的打印调用,如果并行度大于1,则输出也将与生成输出的任务的标识符一起添加。
(4)、writeUsingOutputFormat()/ FileOutputFormat
自定义文件输出的方法和基类,支持自定义对象到字节的转换。
(5)、writeToSocket
根据a将数据元写入套接字SerializationSchema
(6)、addSink
调用自定义接收器函数,Flink捆绑了其他系统(如Apache Kafka)的连接器,这些系统实现为接收器函数。
注意:write*()方法DataStream主要用于调试目的,没有参与Flink的检查点,意味着这些函数通常具有至少一次的语义。刷新到目标系统的数据取决于OutputFormat的实现。意味着并非所有发送到OutputFormat的数据元都会立即显示在目标系统中。失败情况下这些记录可能会丢失。
想要使流可靠,转准确的一次传送到文件系统,使用flink-connector-filesystem。此外通过该.addSink(…)方法的自定义实现可以参与Flink的精确一次语义检查点。