2017-07-11 17 views
1

以下のシナリオでは、複数の大きなファイル(それぞれ200Mレコード)があり、そのファイルをkafkaから送信したいと考えています。パフォーマンスを向上させるために、私はKafkaパーティショニングを使用してデータを送信したかったのです。私のデータ要件は、すべてのメッセージが特定のパーティションに移動する特定のキーに対するものです。現在POCのために私は10カフカのパーティションを使用していて、数値IDフィールドを使用してデータを分割していました。私の論理は単にITの最後の桁をチェックし、それぞれのカフカパーティションにレコードを送信します。 EX:ID - ***7は常にパーティション7になります。キーが非数値であり、パーティションの数が要件に基づいて増減できるため、このロジックを使用してコードを一般化することはできません。カフカパーティションでデータを均等に分配する分割手法

特定の範囲の値を生成できるハッシュアルゴリズムがあることを知りたいのですが(例えば、10パーティションが必要な場合は、0-9で終了するすべてのハッシュ値を作成する必要があります)

答えて

4

はい、単にパーティションの数を法とするキーのハッシュコードを使用できます。しかし、それはデフォルトのパーティショナーがとにかく使っているものなので、それを使うだけかもしれません。

https://github.com/apache/kafka/blob/0.11.0/clients/src/main/java/org/apache/kafka/clients/producer/internals/DefaultPartitioner.java#L69

+0

おかげミハルあなたのコメントについて、私はDefaultPartitioner上の非常に少ない文書がある参照してください。渡されるたびに同じキーの同じハッシュパーティション番号のペアが生成されますか? – Explorer

+0

はい、パーティションの数を変更しない限りです。 –

関連する問題