开发过程中,经常会取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 , 作者:-马什么梅-)