カフカJDBCコネクタのカスタムパーティションの割り当て

ジェームズ・マーク:

私は私がメッセージから特定のキーのパラメータに基づいてパーティションを割り当てるためにカスタムロジックを記述する必要がユースケースを持っています。私はこの上でいくつかの研究を行なったし、変換インタフェースの一部のメソッドをオーバーライドすることカフカ変換サポートを見つけましたが、私はgitのハブまたはどこかにいくつかのサンプルコードを実行することができませんでした。缶誰かがカフカJDBCソースコネクタでカスタムパーティションの割り当てを行うために、サンプルコードやgitのハブリンクを共有してください!

前もって感謝します!。

バルトシュWardziński:

カフカの接続デフォルトの用途でパーティションを割り当てます:DefaultPartitionerorg.apache.kafka.clients.producer.internals.DefaultPartitioner

あなたはいくつかのカスタムでデフォルト1を上書きする必要がある場合は、上書きが適用される、それは可能ですが、あなたは覚えているすべてのソースコネクタあなたが設定する必要があることを行うにはproducer.partitioner.class、元のプロパティをproducer.partitioner.class=com.example.CustomPartitionerまた、あなたはカフカ接続ライブラリとディレクトリへのあなたのパーティとのjarファイルをコピーする必要があります。

変換の方法:

パーティションを設定すると、変換も可能であるが、それは正しいアプローチではありません。Transformationあなたのパーティションを割り当てるために重要であること、話題のメタデータへのアクセスを持っていません。

あなたがあなたの記録のためのパーティションを設定したい場合は、とにかく、コードは次のようになります。

public class AddPartition <R extends ConnectRecord<R>> implements Transformation<R> {

    public static final ConfigDef CONFIG_DEF = new ConfigDef();

    @Override
    public void configure(Map<String, ?> props) {
        final SimpleConfig config = new SimpleConfig(CONFIG_DEF, props);
    }

    @Override
    public R apply(R record) {
        return record.newRecord(record.topic(), calculatePartition(record), record.keySchema(), record.key(), record.valueSchema(), record.value(), record.timestamp());
    }

    private Integer calculatePartition(R record) {
        // Partitions calcuation based on record information
        return 0;
    }

    @Override
    public void close() {
    }

    @Override
    public ConfigDef config() {
        return CONFIG_DEF;
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=210895&siteId=1