В настоящее время я работаю над вариантом использования, который требует чтения сообщений JSON от Kafka и обработки их в Spark с помощью потоковой передачи Spark. Мы ожидаем около 35 миллионов записей в день. При такой загрузке предпочтительнее переместить логику синтаксического анализа (и некоторую логику фильтрации на основе JValue) в Kafka, используя Custom Kafka Deserializer (расширяющий класс org.apache.kafka.common.serialization.Deserializer). Будет ли это иметь накладные расходы на производительность? Спасибо.
Спасибо Робин за быстрый ответ. Однако из-за нашей сложной логики обработки мы подумали о продолжении использования Spark Streaming вместо KStreams API.
Ради интереса, что вы не можете делать с KStreams, что вы будете делать с Spark Streaming?
Также из интереса, почему не Авро? Вы можете сэкономить так много пропускной способности сети с помощью двоичного сжатия
наш вариант использования касается обработки нескольких потоков событий, происходящих в произвольном темпе. И нам нужно объединить эти случайные потоки, которые не привязаны ко времени. Например, поток может прийти через 3 или 4 дня, и нам нужно объединить эти два потока, чтобы прийти к какому-то значимому выводу. Кроме того, у нас есть данные в Hive, которые необходимо учитывать при присоединении к этим потокам. Следовательно, планирование Spark.





Вам также следует взглянуть на Streams API Kafka и KSQL. Оба предоставляют высокопроизводительные, распределенные и гибкие возможности потоковой обработки данных в Kafka.