将kafka指定topic数据保存到txt文件

开发过程中,经常会取kafka中部分数据进行测试,检验数据质量。但是数据在kafka中不便于数据质量的测试,这时需要抽取部分数据在本地进行测试,所以就用到了这篇代码

import com.tct.constants.Constants
import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.api.scala._
import org.apache.flink.streaming.api.TimeCharacteristic
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011

import java.io.BufferedWriter
import java.io.FileWriter
import java.util.Properties

object KafkaToFile {
  def main(args: Array[String]): Unit = {
    // 1.创建执行环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    //设置并发度
    env.setParallelism(1)
    //设置事件时间
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)

    // 2. 从kafka中读取数据
    val properties = new Properties()
    properties.setProperty("bootstrap.servers", "192.168.10.102:9092,192.168.10.103:9092,192.168.10.104:9092")
    properties.setProperty("group.id", "consumer-group")

    val consumer: FlinkKafkaConsumer011[String] = new FlinkKafkaConsumer011[String]("test", new SimpleStringSchema(), properties)
    consumer.setStartFromEarliest()

    val trainMsgStream = env.addSource(consumer)

    val path = "D:\\other\\data\\kafkadata_SDFD.txt"

    def writeData(strvalue: String): Unit = {
      val fw = new FileWriter(path, true)
      val bw = new BufferedWriter(fw)
      bw.write(strvalue + "\r\n")
      bw.flush()
      bw.close()
      fw.close()
    }
   
	//对读取的数据进行简单的截取
    trainMsgStream.map(x=> {
      val str = x.substring(1, x.length - 1)
      writeData(str)
      }
    )

    env.execute("asc1->")
  }
}

有收获?希望烙铁们来个三连击,让更多的同学看到这篇文章

1、烙铁们,关注我看完保证有所收获,不信你打我。

2、点个赞呗,可以让更多的人看到这篇文章,后续还会有很哇塞的产出。

本文章仅供学习及个人复习使用,如需转载请标明转载出处,如有错漏欢迎指出
务必注明来源(注明: 来源:csdn , 作者:-马什么梅-)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一马什么梅一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值