DataStream API编程指南之Data Sinks(八)

sink使用数据流并将其转发到文件、sockets、外部系统或打印。Flink提供了多种内置的输出格式,这些格式被封装在对数据流的操作中:

  • writeAsText() / TextOutputFormat -以字符串的形式逐行写入元素。字符串是通过调用每个元素的toString()方法获得的。
  • writeAsCsv(...) / CsvOutputFormat - 以逗号分隔值文件的形式写入元组。行和字段间的分隔符是可以配置的。每个字段的值可以通过对象.toString()方法获取。
  • print() / printToErr() - 在标准输出/标准错误流中打印每个元素的toString()值。可选地,可以提供一个前缀(msg),并将其前置到输出。这有助于区分对print的不同调用。如果并行度大于1,还可以加上相对应的任务标识符。
  • writeUsingOutputFormat() / FileOutputFormat - 方法和自定义文件输出的基类。支持自定义对象到字节的转换。
  • writeToSocket - 根据SerializationSchema将元素写入socket。
  • addSink - 调用自定义sink函数。Flink与其他系统(如Apache Kafka)的连接器捆绑在一起,这些连接器被实现为sink函数。

注意 : 基于DataStream的write*()方法主要用于调试。这些方法不会参与到Flink的检查中,也就是说,这些函数通常具有“至少一次”语义。数据被刷写到目标系统中,取决于OutputFormat的实现。这意味着并不是发送给OutputFormat的所有元素都立即存储在目标系统中。此外,在发生故障的情况下,这些数据可能会丢失。

为了可靠地、仅一次将流交付到文件系统,可以使用flink-connector-filesystem。另外,自定义的sink可以通过调用.addsink(…)方法加入到Flink的检查点中,以实现精确的一次语义。

猜你喜欢

转载自blog.csdn.net/kaizuidebanli/article/details/106677966
今日推荐