文章目录

  • 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的精确一次语义检查点。