/ /スパークストリーミングを使用したkafkaへの述語プッシュ。 kafkaレベルでkafkaから読み取るレコードをフィルタリングする-Apache-Kafka、Spark-Streaming

述語はスパークストリーミングでカフカにプッシュします。 kafkaレベルでkafkaから読み込むレコードをフィルタリングする - apache-kafka、spark-streaming

メッセージを処理する要件がありますkafkaから取得したスパークストリーミング。メッセージを取得するカフカのトピックには、約100種類のメッセージの複数の種類があります。しかし、私たちは約15種類のメッセージにしか興味がありません。

現在、すべてのメッセージをプルし、RDDまたはDataframeでフィルターオプションを適用する必要があります。

初期段階で多くのメッセージが無駄になるため、kafkaがこれらのメッセージを送信してストリーミングをスパークするのを止める方法はありますか?可能であれば、より少ない容量のノードでスパークストリーミングを実行できます。

1分間に約10万件のメッセージを取得し、そのうち15,000件のメッセージのみを処理します。

kafkaとプロデューサーはサードパーティベンダーによって管理されているため、個別のトピックを使用しても機能しません。

回答:

回答№1は0

このような特別な要件を持つ問題の解決策が1つあります。

可能な場合は、サードパーティベンダーに問い合わせてくださいmessageTypeをキーとして設定します。これにより、Kafkaメッセージ内の「値」フィールドを解析することなく、Sparkアプリの「キー」だけで事前にフィルタリングできる可能性があります。

さらに、このアプローチはまたあなたに与えるかもしれません同じキーが同じパーティションに移動するため、読み取る必要があるパーティションを最小化する機会。これは、次の前提の下で機能します。

  1. カスタムパーティショナーはありません
  2. さらに複数のパーティションがあります