Flink集成Kafka

Flink集成Kafka

Flink可以用于Kafka的生产者,也可以用于Kafka的消费者。

在这里插入图片描述

Flink作为生产者

需要创建FlinkKafkaProducer对象作为生产者向Kafka中发送消息

  • 代码实现
public class MyFlinkKafkaProducer {

    public static void main(String[] args) throws Exception {

        // TODO 1. 获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(4);//并行度的数量需要和Kafka主题中的分区数量一致,效率最高

        // TODO 2. 创建数据源
        DataStreamSource<String> socketSource = env.socketTextStream("localhost", 9001);

        // TODO 3. 创建FlinkKafkaProducer对象
        Properties conf = new Properties();
        conf.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop102:9092,hadoop103:9092,hadoop104:9092");
        FlinkKafkaProducer<String> flinkKafkaProducer = new FlinkKafkaProducer<String>("first", new SimpleStringSchema(), conf);
        // FlinkKafkaProducer<String> kafkaProducer1 = new FlinkKafkaProducer<>("hadoop102:9092,hadoop103:9092,hadoop104:9092", "first", new SimpleStringSchema());

        // TODO 4. 绑定flinKafkaProducer对象
        socketSource.addSink(flinkKafkaProducer);

        // TODO 5. 启动执行
        env.execute();
    }
}

Flink作为消费者

需要创建FlinkKafkaConsumer对象作为消费者从Kafka中消费消息作为Flink程序的数据源。

  • 代码实现
public class MyFlinkKafkaConsumer {

    public static void main(String[] args) throws Exception {

        // TODO 1. 获取执行环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(4);

        // TODO 2. 创建数据源 - FlinkKafkaConsumer对象
        Properties conf = new Properties();
        conf.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"hadoop102:9092,hadoop103:9092,hadoop104:9092");
        FlinkKafkaConsumer<String> flinkKafkaConsumer = new FlinkKafkaConsumer<>("first", new SimpleStringSchema(), conf);

        // TODO 4. 绑定FlinkKafkaConsumer对象
        DataStreamSource<String> kafkaDS = env.addSource(flinkKafkaConsumer);
        
        // TODO 4. 消费主题中数据并打印
        kafkaDS.print();

        // TODO 5. 启动执行
        env.execute();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值