Что мне следует использовать: Kafka Stream или потребительский API Kafka или Kafka connect

Я хотел бы знать, что для меня лучше всего: поток Kafka или потребительский API Kafka или подключение Kafka?

Я хочу прочитать данные из темы, затем обработать и записать в базу данных. Итак, я написал потребителей, но я чувствую, что могу написать потоковое приложение Kafka и использовать его процессор с отслеживанием состояния для выполнения любых изменений и записи их в базу данных, которая может устранить мой потребительский код, и мне нужно только написать код db.

Базы данных, которые я хочу вставить в свои записи: HDFS - (вставить необработанный JSON) MSSQL - (обработанный json)

Другой вариант - подключение Kafka, но я обнаружил, что на данный момент нет поддержки json для приемника hdfs и соединителя приемника jdbc (я не хочу писать в avro), и создание схемы также является проблемой для сложных вложенных сообщений.

Или я должен написать собственный Kafka connect, чтобы сделать это.

Так нужно ли вам мнение о том, следует ли мне писать потребителя Kafka, поток Kafka или соединение Kafka? А что будет лучше по производительности и с меньшими накладными расходами?


person Nandish Kotadia    schedule 04.09.2017    source источник


Ответы (2)


Вы можете использовать их все вместе

Я пробовал приемник HDFS для JSON, но не могу использовать org.apache.kafka.connect.json.JsonConverter

Непонятно почему. Но я предполагаю, что вы забыли установить schemas.enabled=false.

когда я устанавливаю org.apache.kafka.connect.storage.StringConverter, он работает, но записывает объект json в строковом экранированном формате. Например, {"name":"hello"} записывается в hdfs как "{\"name\":\"hello\"}"

Да, он будет экранировать строку JSON

Обработка, которую я хочу сделать, - это базовая проверка и преобразование нескольких значений полей

Kafka Streams или Consumer API поддерживает проверку. Connect поддерживает простые преобразования сообщений (SMT)


В некоторых случаях вам нужно «дублировать данные» в Kafka; обработайте вашу «необработанную» тему, прочтите ее с помощью потребителя, затем создайте ее обратно в «очищенную» тему, из которой вы можете использовать Kafka Connect для записи в базу данных или файловую систему.

person OneCricketeer    schedule 30.09.2018

Добро пожаловать в stack overflow! Пожалуйста, ознакомьтесь с https://stackoverflow.com/tour

Пожалуйста, публикуйте сообщения с точным вопросом, не спрашивая мнения - это делает сайт более понятным, а мнения не являются ответами (и зависят от предпочтений каждого человека). Спрашивать «Как использовать Kafka-connect с json» - по крайней мере, подошло бы этому сайту.

Кроме того, покажите, пожалуйста, некоторые исследования.


Меньше накладных расходов будет для потребителя kafka - поток kafka и kafka connect используют потребителя kafka, поэтому вы всегда сможете уменьшить накладные расходы, но также потеряете все преимущества (терпимость к сбоям, простота использования, поддержка и т. Д.)

Во-первых, это зависит от вашей обработки. Агрегация? Подсчет? Проверка? Затем вы можете использовать потоки kafka для обработки и записи результата в новую тему в желаемом формате.

Затем вы можете использовать kafka connect для отправки данных в свою базу данных. Вы не обязаны использовать avro, вы можете использовать другой формат для ключа / значения, см.

Kafka Connect HDFS Sink для формата JSON с использованием JsonConverter

Kafka Connect не выводит JSON

person Treziac    schedule 04.09.2017
comment
Я пробовал приемник HDFS для JSON, но не смог использовать org.apache.kafka.connect.json.JsonConverter, но когда я org.apache.kafka.connect.storage.StringConverter он работает, но записывает объект json в строковом экранированном формате. Например, {name: hello} записывается в hdfs как {\ name \: \ hello \} - person Nandish Kotadia; 04.09.2017
comment
Поэтому мне нужен кто-то из экспертов, чтобы предложить, следует ли мне писать то же самое с потребителем kafka, потоком kafka или настраиваемым подключением kafka. - person Nandish Kotadia; 04.09.2017
comment
Обработка, которую я хочу выполнить, - это базовая проверка и преобразование нескольких значений полей. - person Nandish Kotadia; 04.09.2017