一.Kafka使用者和时间戳提取/水印发射
在许多情况下,记录的时间戳(显式或隐式地)嵌入到记录本身。另外,用户可能希望例如基于包含当前事件时间水印的Kafka流中的特殊记录,周期性地或以不规则的方式发出水印。对于这些情况,Flink Kafka Consumer允许指定一个AssignerWithPeriodicWatermarks或一个AssignerWithPunctuatedWatermarks。
可以按此处所述指定自定义的时间戳提取器/水印发射器,或使用预定义的提取器/水印发射器 。这样做之后,可以通过以下方式将其传递给消费者:
val properties = new Properties()
properties.setProperty("bootstrap.servers" , "master:9092,slave01:9092,slave02:9092")
properties.setProperty("group.id" , "spark")
properties.setProperty("enable.auto.commit" , "true")
properties.setProperty("auto.commit.interval.ms" ,"5000")
/**
* 配置下次重新消费的话,从哪里开始消费:
* latest:从上一次提交的offset位置开始的
* earlist:从头开始进行(重复消费数据)
*/
properties.setProperty("auto.offset.reset" , "latest")
// 配置序列化和反序列化
properties.setProperty("key.deserializer" , "org.apache.kafka.common.serialization.StringDeserializer")
properties.setProperty("value.deserializer" , "org.apache.kafka.common.serialization.StringDeserializer")
//获取数据源 kafka
val consumer : FlinkKafkaConsumer09[String] = new FlinkKafka