私たちが持っているキーに私自身のパーティショナーベースを書く必要があります。独自のカスタムパーティショナーを作成できるようです。彼らはkafka用の独自のカスタムパーティショナーを作成
生産者が自分の好きな話題にデータを公開すると言うカフカメインのサイトから
。プロデューサは、 で、どのレコードをどのパーティションに割り当てるかを選択します。 これは、ラウンドロビン方式で、単に のバランスロードにすることも、いくつかのセマンティックパーティション 関数(レコードのいくつかのキーに基づいて言います)に従って行うこともできます。 2回目の分割で を使用する方法の詳細私の場合は
、我々はデータが入るべきパーティションを決定するために、この数式を使用したいので、我々はそれのため10 partitions
を持っていますトピックを与えられました。
partition = client_id % MOD 10
client_id
が鍵となると、それは常に、それは常にlongデータ型になり、数値になります。私はclient_id
のためにどのパーティションを使うべきか教えてくれるカフカプロデューサー用の独自のカスタムパーティショナーを書くことができます。
私はPartitioner
クラスを実装していくつかの変更を加えなければなりませんでしたが、keyBytes
変数を使用して上記の式に基づいてパーティションを把握する方法がわかりません。
@Override
public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes,
Cluster cluster) {
// TODO Auto-generated method stub
return 0;
}
私はKafka 0.10.0.0バージョンを実行しています。