根据这些文档,在应用map selectKey groupBy时,流将被标记为重新分区,即使新密钥已被适当地划分。是否可以添加选项参数来禁用重新分区?
这里是我的用户案例:有一个主题已经被user_id分区了。
# topic 'user', format '%key,%value'
partition-1:
user1,{'user_id':'user1', 'device_id':'device1'}
user1,{'user_id':'user1', 'device_id':'device1'}
user1,{'user_id':'user1', 'device_id':'device2'}
partition-2:
user2,{'user_id':'user2', 'device_id':'device3'}
user2,{'user_id':'user2', 'device_id':'device4'}我希望使用DSL对user_id-设备_id对进行计数,如下所示:
stream
.groupBy((user_id, value) -> {
JSONObject event = new JSONObject(value);
String userId = event.getString('user_id');
String deviceId = event.getString('device_id');
return String.format("%s&%s", userId,deviceId);
})
.count();实际上,新键已经间接地被分区了。没有必要再这样做了。
发布于 2018-11-14 18:51:23
如果使用.groupBy(),它总是会导致数据重新分区。如果可能的话,使用groupByKey代替,这将只在需要时重新划分数据。
在您的例子中,您无论如何都要更改键,这样就会创建一个重新分区的主题。
https://stackoverflow.com/questions/53273984
复制相似问题