Flink从Kafka读取数据

 Kafka读取数据

Flink官方提供了连接工具flink-connector-kafka,直接帮我们实现了一个消费者FlinkKafkaConsumer,它就是用来读取Kafka数据的SourceFunction。

所以想要以Kafka作为数据源获取数据,我们只需要引入Kafka连接器的依赖。Flink官方提供的是一个通用的Kafka连接器,它会自动跟踪最新版本的Kafka客户端。目前最新版本只支持0.10.0版本以上的Kafka。这里我们需要导入的依赖如下。

<dependency>

    <groupId>org.apache.flink</groupId>

    <artifactId>flink-connector-kafka</artifactId>

    <version>${flink.version}</version>

</dependency>

代码如下:

public class SourceKafka {

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

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        KafkaSource<String> kafkaSource = KafkaSource.<String>builder()

            .setBootstrapServers("hadoop102:9092")

            .setTopics("topic_1")

            .setGroupId("atguigu")

            .setStartingOffsets(OffsetsInitializer.latest())

            .setValueOnlyDeserializer(new SimpleStringSchema())

            .build();

        DataStreamSource<String> stream = env.fromSource(kafkaSource, WatermarkStrategy.noWatermarks(), "kafka-source");

        stream.print("Kafka");

        env.execute();

    }

}

5.2.6 从数据生成器读取数据

Flink从1.11开始提供了一个内置的DataGen 连接器,主要是用于生成一些随机数,用于在没有数据源的时候,进行流任务的测试以及性能测试等。1.17提供了新的Source写法,需要导入依赖:

        <dependency>

            <groupId>org.apache.flink</groupId>

            <artifactId>flink-connector-datagen</artifactId>

            <version>${flink.version}</version>

        </dependency>

代码如下:

public class DataGeneratorDemo {

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

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        env.setParallelism(1);

        DataGeneratorSource<String> dataGeneratorSource =

                new DataGeneratorSource<>(

                        new GeneratorFunction<Long, String>() {

                            @Override

                            public String map(Long value) throws Exception {

                                return "Number:"+value;

                            }

                        },

                        Long.MAX_VALUE,

                        RateLimiterStrategy.perSecond(10),

                        Types.STRING

                );

        env

                .fromSource(dataGeneratorSource, WatermarkStrategy.noWatermarks(), "datagenerator")

                .print();

        env.execute();

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

走过冬季

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

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

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

打赏作者

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

抵扣说明:

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

余额充值