使用2017-09-08_03_55_43-9675407418829265662
的流式数据流作业(Apache Beam SDK for Java 2.1.0
)即使有越来越多的pubsub队列(现在是100k未发送的消息),也不会扩展到1个工作者之外 - 你有什么想法吗?
目前正在使用autoscalingAlgorithm=THROUGHPUT_BASED
和maxNumWorkers=10
。
答案 0 :(得分:1)
数据流工程师。我查看了后端的工作,我可以看到它没有扩展,因为CPU利用率很低,这意味着其他因素限制了管道的性能,例如外部限制。在这些情况下,升级很少有帮助。
我发现有些捆绑包需要几个小时来处理。我建议调查您的管道逻辑,看看是否还有其他可以优化的部分。
答案 1 :(得分:0)
这就是我最终的结果:
import org.apache.beam.sdk.transforms.*;
import org.apache.beam.sdk.values.KV;
import org.apache.beam.sdk.values.PCollection;
import java.util.concurrent.ThreadLocalRandom;
public class ReshuffleWithRandomKey<T>
extends PTransform<PCollection<T>, PCollection<T>> {
private final int size;
public ReshuffleWithRandomKey(int size) {
this.size = size;
}
@Override
public PCollection<T> expand(PCollection<T> input) {
return input
.apply("Random key", ParDo.of(new AssignRandomKeyFn<T>(size)))
.apply("Reshuffle", Reshuffle.<Integer, T>of())
.apply("Values", Values.<T>create());
}
private static class AssignRandomKeyFn<T> extends DoFn<T, KV<Integer, T>> {
private final int size;
AssignRandomKeyFn(int size) {
this.size = size;
}
@ProcessElement
public void process(ProcessContext c) {
c.output(KV.of(ThreadLocalRandom.current().nextInt(0, size), c.element()));
}
}
}
你怎么看@ raghu-angadi和@ scott-wegner?