Kafka连接基于密钥的读取值并写入HDFS

时间:2018-07-10 15:30:09

标签: apache-kafka avro apache-kafka-connect confluent

  1. 有什么方法可以仅将特定事件类型从kafka主题下沉到HDFS,然后使用kafka connect HDFS连接器过滤其余类型?
  2. 我们是否可以基于某个键隔离输入事件并写入不同的分区。以便特定键的值进入特定分区?
  3. 我们可以使用存储在架构注册表中的键来获取特定于该主题的值的avro格式数据的值吗?请让我知道我的理解是否需要澄清。

如果Kafka connect不具备此功能,可以使用kafka流实现此功能吗?请提供一些帮助文档(如果有)。

1 个答案:

答案 0 :(得分:0)

  

有什么方法可以仅将特定事件类型从kafka主题下沉到HDFS,然后使用kafka connect HDFS连接器过滤其余类型?

Kafka Connect具有用于处理消息的转换,但并不用于过滤。这通常由Kafka Streams或KSQL完成

  

我们可以基于某个键将输入事件分开并写入不同的分区,以使特定键的值进入特定分区吗?

在Confluent文档中提到的FieldPartitioner类可以做到这一点(警告:我相信它仅用于顶级字段,而不用于嵌套的JSON或Avro记录字段)

  

我们可以使用存储在架构注册表中的键来获取特定于avro格式数据的特定键的主题中的值吗?

我不明白这个问题,但是默认情况下,HDFS Connect在写入数据时会忽略Kafka消息密钥,因此我将拒绝。

Kafka数据不是按键索引的,而是按其分区的,这意味着,如果您确实使用DefaultPartioner而不是FieldPartitioner,则所有键都将按Kafka分区位于单个文件系统路径中。只有这样,您才可以查询,而不是通过键,而是通过分区。例如使用Spark或Hive。再次,这是默认行为-如前所述,您可以使用Transform将Kafka键添加到数据中,然后可以通过其查询