2017-03-20 22 views
2

カフカのトピックにメッセージを送信するときに、他のメッセージと比較してサイズがはるかに大きい単一のメッセージが表示されることがあります。カフカ圧縮:単一メッセージレベルでの圧縮方法

したがって、単一のメッセージレベルで圧縮する必要があります。 https://cwiki.apache.org/confluence/display/KAFKA/Compression 1として 、

メッセージのセットを圧縮して一つの圧縮 メッセージとして表すことができます。プロパティcompression.typeため https://github.com/apache/kafka/blob/0.10.1/clients/src/main/java/org/apache/kafka/clients/producer/ProducerConfig.javaここでの説明の通りまた

圧縮は、データの完全なバッチのので、バッチ処理 の効力はまた、(圧縮比に影響を与えますより多くのバッチ処理はより良いことを意味する)。

バッチサイズを1つにするか、バッチ処理を無効にして各メッセージレベルで圧縮しますか?

+0

なぜ圧縮バッチが受け入れられないのですか? – ftr

+0

私はそれを言っていません。私の意図は、1つのメッセージが非常に大きく、バッチを有効にして、メッセージを圧縮して送信するか、次のメッセージがバッチconstarintを満たすのを待つかどうかです。 –

+0

@AnilKumar、あなたはこの質問の答えを得ました、今は同じ問題に直面しています、各メッセージはとても大きいです、私は圧縮したい、それぞれのメッセージと送信、それは可能ですか? – Bravo

答えて

0

圧縮は、バッチで生産するかどうかという問題とは正反対です。ドキュメントに記載されているようものの、:より多くのバッチ処理は、優れた圧縮

を意味

圧縮は、トピックレベル(https://kafka.apache.org/documentation/#topicconfigs)やプロデューサーの設定(https://kafka.apache.org/documentation/#producerconfigs)の一部として設定することができます。さらに、同じトピックの異なるメッセージは、圧縮タイプがレコードメタデータ(https://kafka.apache.org/documentation/#recordbatch)の一部であり、コンシューマにとってシームレスであるため、異なるタイプで圧縮することができます。

ただし、異なるメッセージを選択的に圧縮する必要がある場合は、同じプロデューサでは実行できません。プロデューサの設定は静的であるためです。そのような選択の動機が何であれ、2つのプロデューサインスタンス(圧縮をサポートするインスタンスと圧縮をサポートしないインスタンス)を作成し、メッセージの内容に応じて、それを送信するプロデューサを決定できます。