Kafka Connect Sink Partitioning: подразбиение?

Если я запускаю Kafka Connect Sink, я указываю входной файл .properties, который указывает partitioner.class, такой как FieldPartitioner, который может секционироваться на основе поля записи, указанного в partition.field.name.

Итак, что, если я хочу два уровня секционирования? Например, я хочу разделить дату и время на верхнем уровне, а затем разделить по полю записи? Или просто разбить на два поля? В Spark это на самом деле довольно распространено.

Основываясь на структуре формата файла конфигурации свойств, я предполагаю, что это не разрешено. Верна ли эта презумпция?


person clay    schedule 17.04.2017    source источник
comment
повезло с этим?   -  person Can Elmas    schedule 26.01.2019
comment
Да, я написал свой собственный класс разделителя и использую небольшой плагин в продакшене. Платформа Confluent совсем недавно добавила один класс секционирования, который поддерживает несколько полей, и отдельный класс секционирования, обеспечивающий полную поддержку даты и времени, но если вы хотите сделать и то, и другое, вам все равно понадобится специальный плагин. Это кажется очень распространенным сценарием, поэтому я удивлен, что Confluent не решает эту проблему лучше. Я привык использовать пользовательский плагин.   -  person clay    schedule 26.01.2019


Ответы (1)


Похоже, вам придется написать свой собственный класс секционирования, реализующий интерфейс Partitioner. При желании он может использовать одну из двух категорий разделителей в качестве базового класса (возможно, TimeBasedPartitioner или FieldPartitioner), в зависимости от того, какой из них обладает наибольшей функциональностью для того, чего вы хотите достичь.

В настоящее время нет способа добиться этого типа разбиения только с помощью конфигурации. Но звучит полезно. Кроме того, я не уверен, какой тип приемника вы имеете в виду, но если он связан с хранилищем, вы можете использовать код, связанный с разделителями, который включен в kafka-connect-storage-common

person Konstantine Karantasis    schedule 17.04.2017