使用Flink动态消费和接收Kafka主题

时间:2017-12-21 17:43:26

标签: amazon-s3 apache-flink avro flink-streaming

我无法在网上找到有关此内容的更多信息。我想知道是否可以构建一个Flink应用程序,它可以动态地使用与正则表达式模式匹配的所有主题并将这些主题同步到s3。此外,动态同步的每个主题都将包含Avro消息,而Flink应用程序将使用Confluent的架构注册表。

2 个答案:

答案 0 :(得分:1)

太幸运了! Flink 1.4几天前刚刚发布,这是第一个使用 REGEX 提供消费Kafka主题的版本。根据java文档,这里是你如何使用它:

  

FlinkKafkaConsumer011

public FlinkKafkaConsumer011(PatternsubscriptionPattern,DeserializationSchema<T> valueDeserializer,Properties props)
  

为Kafka 0.11.x创建一个新的Kafka流式源消费者。 使用   此构造函数基于常规订阅多个主题   表达模式。如果启用了分区发现(通过设置   非负值    FlinkKafkaConsumerBase.KEY_PARTITION_DISCOVERY_INTERVAL_MILLIS   属性),名称与模式匹配的主题也将是   订阅,因为它们是在动态创建的。

     

<强>参数:

     

subscriptionPattern - 要订阅的主题名称模式的正则表达式。    valueDeserializer - 用于在Kafka的字节消息和Flink对象之间进行转换的de / serializer。

     

props - 用于配置Kafka客户端客户端和ZooKeeper客户端的属性。

只是通知运行Flink流媒体应用程序,它会使用使用者配置指定的时间间隔从Zookeeper获取主题数据:

FlinkKafkaConsumerBase.KEY_PARTITION_DISCOVERY_INTERVAL_MILLIS

这意味着每个消费者都应该按照指定的时间间隔重新同步元数据,包括主题。默认值为5分钟。因此,添加一个新主题,您应该期望消费者最多在5分钟内开始消费它。您应该使用所需的时间间隔为Flink使用者设置此配置。

答案 1 :(得分:0)

在Flink 1.4中添加了使用正则表达式模式订阅Kafka主题。请参阅documentation here

S3是Flink支持的文件系统之一。要将流可靠,准确地一次传送到文件系统,请使用flink-connector-filesystem connector

您可以将Flink配置为使用Avro,但我不确定与Confluent的架构注册表互操作的状态。

要搜索这些主题和其他主题,我建议您在Flink文档页面上进行搜索。例如:https://ci.apache.org/projects/flink/flink-docs-release-1.4/search-results.html?q=schema+registry