Kafka 1.0:使用java更改特定主题的分区数

Kafka 1.0:使用java更改特定主题的分区数,java,apache-kafka,Java,Apache Kafka,Kafka 1.0中的AdminUtils.addPartition调用似乎已将签名从2版本-0.10.2.0更改为1.0.0,如下所示 ========================== 卡夫卡0.10.2.0 ========================== 卡夫卡1.0.0 关于如何在Java中轻松使用新的addPartitions调用而不必指定现有和新的副本分配,您有什么想法吗?试试这个, 它对我有用 Seq<String> names = JavaConverters

Kafka 1.0中的AdminUtils.addPartition调用似乎已将签名从2版本-0.10.2.0更改为1.0.0,如下所示

==========================

卡夫卡0.10.2.0 ==========================

卡夫卡1.0.0 关于如何在Java中轻松使用新的addPartitions调用而不必指定现有和新的副本分配,您有什么想法吗?

试试这个, 它对我有用

Seq<String> names = JavaConverters.asScalaBuffer(Arrays.asList(topicname)).toSeq();
        Seq<BrokerMetadata> brokers = AdminUtils.getBrokerMetadatas(zkUtils, Enforced$.MODULE$, Option.empty());

        Map<String, Map<Object, Seq<Object>>> assignment
            = zkUtils.getPartitionAssignmentForTopics(names);
        Option<Map<Object, Seq<Object>>> assgn = assignment.get(topicname);

        AdminUtils.addPartitions(zkUtils, topicname, assgn.get(), brokers, partitions, Option.empty(), false);
Seq name=JavaConverters.asScalaBuffer(Arrays.asList(topicname)).toSeq();
Seq brokers=AdminUtils.getBrokerMetadata(zkUtils,强制的$.MODULE$,Option.empty());
地图分配
=zkUtils.getPartitionAssignmentForTopics(名称);
Option assgn=assignment.get(topicname);
addPartitions(zkUtils,topicname,assgn.get(),代理,分区,Option.empty(),false);

@Munish-感谢您的回复。这是为我工作的代码

Seq<String> names = JavaConverters.asScalaBuffer(Arrays.asList(topicName));

Seq<BrokerMetadata> brokers = AdminUtils.getBrokerMetadatas(zkUtils,RackAwareMode.Enforced$.MODULE$, Option.empty());

scala.collection.mutable.Map<String, scala.collection.Map<Object, Seq<Object>>> assignment = (scala.collection.mutable.Map<String,     scala.collection.Map<Object, Seq<Object>>>)zkUtils.getPartitionAssignmentForTopics(names);

Map<String, scala.collection.Map<Object, Seq<Object>>> partitionaAssigmentMap = JavaConverters.mutableMapAsJavaMap(assignment);

AdminUtils.addPartitions(zkUtils, topicName, partitionaAssigmentMap.get(topicName), brokers,partitionCount, Option.empty(), false);
Seq name=JavaConverters.asScalaBuffer(Arrays.asList(topicName));
Seq brokers=adminiutils.getbrokerMetadata(zkUtils,RackAwareMode.exforced$.MODULE$,Option.empty());
scala.collection.mutable.Map赋值=(scala.collection.mutable.Map)zkUtils.getPartitionAssignmentForTopics(名称);
Map partitionaAssigmentMap=JavaConverters.mutableMapAsJavaMap(赋值);
addPartitions(zkUtils,topicName,partitionaAssigmentMap.get(topicName),brokers,partitionCount,Option.empty(),false);

从1.0.0开始,您可以改用卡夫卡客户端库

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>1.0.0</version> <!-- or newer -->
</dependency>
Seq<String> names = JavaConverters.asScalaBuffer(Arrays.asList(topicName));

Seq<BrokerMetadata> brokers = AdminUtils.getBrokerMetadatas(zkUtils,RackAwareMode.Enforced$.MODULE$, Option.empty());

scala.collection.mutable.Map<String, scala.collection.Map<Object, Seq<Object>>> assignment = (scala.collection.mutable.Map<String,     scala.collection.Map<Object, Seq<Object>>>)zkUtils.getPartitionAssignmentForTopics(names);

Map<String, scala.collection.Map<Object, Seq<Object>>> partitionaAssigmentMap = JavaConverters.mutableMapAsJavaMap(assignment);

AdminUtils.addPartitions(zkUtils, topicName, partitionaAssigmentMap.get(topicName), brokers,partitionCount, Option.empty(), false);
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>1.0.0</version> <!-- or newer -->
</dependency>
NewPartition newPartitionRequest = NewPartitions.increaseTo(10);
client.createPartitions(Collections.singletonMap("topicName", newPartitionRequest)).all().get();  //kafka clients AdminClient