Flink de la entrada a la fragancia real (7, archivo de salida de datos del sumidero)

La fuente es la entrada del programa Flink, Sink es la salida de los datos después de que el programa Flink procesa la fuente, como escribir la salida en un archivo, sockets, sistema externo o simplemente mostrar (en el ecosistema de big data, muchos similares, como Flume también Fuente / canal / disipador correspondiente), Flink proporciona una variedad de métodos de salida de datos

A diferencia de escribir directamente en el código (por ejemplo, puede escribir directamente en open, close y map en RickMap), puede guardar algún estado, mecanismo de reintento tolerante a fallas, etc.


package com.mafei.sinktest

import org.apache.flink.api.common.serialization.SimpleStringEncoder
import org.apache.flink.core.fs.Path
import org.apache.flink.streaming.api.functions.sink.filesystem.StreamingFileSink
import org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, createTypeInformation}

case class SensorReadingTest3(id: String,timestamp: Long, temperature: Double)

object FileSink {
  def main(args: Array[String]): Unit = {
    //创建执行环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment

    val inputStream= env.readTextFile("/opt/java2020_study/maven/flink1/src/main/resources/sensor.txt")
    env.setParallelism(1)

    //先转换成样例类类型
    val dataStream = inputStream
      .map(data =>{
        val arr = data.split(",")   //按照,分割数据,获取结果
        SensorReadingTest3(arr(0), arr(1).toLong,arr(2).toDouble)  //生成一个传感器类的数据,参数中传toLong和toDouble是因为默认分割后是字符串类别
      })

    dataStream.print()

    //简单的输出到txt中的方法,已被flink弃用
//    dataStream.writeAsText("/opt/java2020_study/maven/flink1/src/main/resources/sink.txt")

    //新的输出方式-推荐
    dataStream.addSink(
      StreamingFileSink.forRowFormat(
        new Path("/opt/java2020_study/maven/flink1/src/main/resources/sink2.txt"),
        new SimpleStringEncoder[SensorReadingTest3]()   //可以在括号中传入编码,默认是udf-8
      ).build()
    )

    env.execute("udf test")
  }

}

Estructura de código y efecto de salida final:

Flink de la entrada a la fragancia real (7, archivo de salida de datos del sumidero)

Supongo que te gusta

Origin blog.51cto.com/mapengfei/2547241
Recomendado
Clasificación