メッセージを処理する要件がありますkafkaから取得したスパークストリーミング。メッセージを取得するカフカのトピックには、約100種類のメッセージの複数の種類があります。しかし、私たちは約15種類のメッセージにしか興味がありません。
現在、すべてのメッセージをプルし、RDDまたはDataframeでフィルターオプションを適用する必要があります。
初期段階で多くのメッセージが無駄になるため、kafkaがこれらのメッセージを送信してストリーミングをスパークするのを止める方法はありますか?可能であれば、より少ない容量のノードでスパークストリーミングを実行できます。
1分間に約10万件のメッセージを取得し、そのうち15,000件のメッセージのみを処理します。
kafkaとプロデューサーはサードパーティベンダーによって管理されているため、個別のトピックを使用しても機能しません。
回答:
回答№1は0このような特別な要件を持つ問題の解決策が1つあります。
可能な場合は、サードパーティベンダーに問い合わせてくださいmessageTypeをキーとして設定します。これにより、Kafkaメッセージ内の「値」フィールドを解析することなく、Sparkアプリの「キー」だけで事前にフィルタリングできる可能性があります。
さらに、このアプローチはまたあなたに与えるかもしれません同じキーが同じパーティションに移動するため、読み取る必要があるパーティションを最小化する機会。これは、次の前提の下で機能します。
- カスタムパーティショナーはありません
- さらに複数のパーティションがあります