Flink项目开发记录之kafka获取数据

Flink项目开发记录

项目背景:使用的jar包版本: flink1.9.0 、kafka 2.0.1、scala 2.11.11

<dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-scala_2.11</artifactId>
            <version>${flink.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.scala-lang</groupId>
                    <artifactId>scala-compiler</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.scala-lang</groupId>
                    <artifactId>scala-library</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.scala-lang</groupId>
                    <artifactId>scala-reflect</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
<dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.11.11</version>
            <scope>compile</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-scala -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-scala_2.11</artifactId>
            <version>${flink.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.scala-lang</groupId>
                    <artifactId>scala-compiler</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.flink/flink-connector-kafka -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka_2.11</artifactId>
            <version>${flink.version}</version>
        </dependency>

主要是排除了一些scala的依赖,否则会产生jar包冲突,会报
scala的reflect包丢失等错误,主要原因便是这个scala-compiler包 切记

原先使用的是flink1.7.0,因为akka的timeout原因,1.7版本不支持手动设置akka超时时间,导致集群一直起不来,所以升级了flink。顺带将kafka也配套到了2.0.1

kafka在升级到2.0.1之后,对于flink的生产者 FlinkKafkaProducer类的构造函数,多了自己的KafkaSerializationSchema,原先的KeyedSerializationSchema与SimpleStringSchema 都标记了过时,
项目中使用的是KeyedSerializationSchemaWrapper 包装了SimpleStringSchema,查看了一下源码之后,发现KafkaSerializationSchema并没有实现自己的类,也就是说需要自己去实现流的序列化,所以目前也就将就着使用过时的方法了,而FlinkKafkaConsumer则还是没用标记过时 。

从kafka中获取数据的代码如下:

    val kafkaProperties = new Properties();
    kafkaProperties.put("bootstrap.servers",props.getProperty("kafka.brokers"))
    kafkaProperties.put("group.id",props.getProperty("group.id"))
    val dataTopic = props.getProperty("kafka.topics.data")
    val kafkaSource = new FlinkKafkaConsumer[String](dataTopic,new SimpleStringSchema(),kafkaProperties)
    val data = env.addSource(kafkaSource)

这样就可以接着流进行处理了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值