flink采集本地文件到kafka (本地跑)

kafka地址为:
请添加图片描述

创建测试topic。
首先找到创建脚本:kafka-topics.sh

命令:find /opt/ -name 'kafka-topics*’
请添加图片描述

查看所有topic:kafka-topics --zookeeper localhost:2181 —list
请添加图片描述

创建一个mgtest

./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic mgtest1

请添加图片描述

代码如下:

import org.apache.flink.api.common.serialization.SimpleStringSchema
import org.apache.flink.streaming.api.scala._
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011


//采集本地数据到kafka
object KafkaSinkTest {
  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)


    val inputStream = env.readTextFile("/Users/edy/IdeaProjects/flinksql/src/main/resources/sensor.txt")
    val datastream = inputStream.map(x => {
      val arr = x.split(",")
      Test(arr(0).trim, arr(1).trim.toLong, arr(2).trim.toDouble).toString
    })


    //sink
    datastream.addSink(new FlinkKafkaProducer011[String]("172.16.104.2:9092,172.16.104.3:9092,172.16.104.4:9092","mgtest",new SimpleStringSchema()))
    datastream.print()


    env.execute(" kafka sink test")


  }


case class Test(id: String, timestamp: Long, temperature: Double)
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache Flink来读取Kafka消息并将其写回Kafka。以下是基本的代码示例: 首先,您需要在项目中添加FlinkKafka的依赖包。这里假设您已经设置好了Maven项目。 ```xml <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.12</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_2.12</artifactId> <version>${flink.version}</version> </dependency> </dependencies> ``` 确保`${flink.version}`是您要使用的Flink版本。 接下来,您可以使用以下代码片段来实现从Kafka读取消息并将其写回Kafka: ```java import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer; import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer; import org.apache.flink.streaming.util.serialization.SimpleStringSchema; import java.util.Properties; public class FlinkKafkaExample { public static void main(String[] args) throws Exception { // 设置执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 设置Kafka消费者的配置 Properties consumerProps = new Properties(); consumerProps.setProperty("bootstrap.servers", "localhost:9092"); consumerProps.setProperty("group.id", "flink-consumer"); // 从Kafka读取消息 FlinkKafkaConsumer<String> kafkaConsumer = new FlinkKafkaConsumer<>("input-topic", new SimpleStringSchema(), consumerProps); DataStream<String> inputDataStream = env.addSource(kafkaConsumer); // 设置Kafka生产者的配置 Properties producerProps = new Properties(); producerProps.setProperty("bootstrap.servers", "localhost:9092"); // 将消息写回Kafka FlinkKafkaProducer<String> kafkaProducer = new FlinkKafkaProducer<>("output-topic", new SimpleStringSchema(), producerProps); inputDataStream.addSink(kafkaProducer); // 执行任务 env.execute("Flink Kafka Example"); } } ``` 请注意,上述代码中的`input-topic`和`output-topic`需要替换为您实际使用的Kafka主题名称。您还可以根据需要调整其他KafkaFlink配置。 希望这能帮助您开始在Flink中读取Kafka消息并将其写回Kafka。如有任何问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值