Apache BEAM, реализующий UnboundedSource - как BEAM решает, сколько читателей создано? - PullRequest
0 голосов
/ 27 февраля 2019

Я реализую UnboundedReader, чтобы использовать пользовательский источник данных (на основе внутреннего Java-интерфейса, основанного на подписке, API-интерфейса Java).Когда я выполняю конвейер, я замечаю, что создаются несколько экземпляров UnboundedReader.Как BEAM определяет, сколько раз вызывать

public abstract UnboundedSource.UnboundedReader<OutputT> createReader(PipelineOptions options, CheckPointMarkT checkpointMark)

метод UnboundedSource?

Мой метод split () реализован следующим образом:

public List<? extends UnboundedSource<MyRecord, MyCheckpointMark>> split(int desiredNumSplits, PipelineOptions options) throws Exception {
    List<MySubscriptionSource> list = new ArrayList<>(1);
    list.add(this);
    return list;
}

Есть лиспособ заставить только одного читателя быть созданным?

1 Ответ

0 голосов
/ 28 февраля 2019

Я немного покопался и прочитал источник прямого бегуна.Он написан для случайного закрытия существующего считывателя (с вероятностью 5%) и принудительного восстановления контрольной точки: https://github.com/apache/beam/blob/a679d98cbcc49b01528c168cce8b578338a5bcdd/runners/direct-java/src/main/java/org/apache/beam/runners/direct/UnboundedReadEvaluatorFactory.java#L150

Нет комментариев, чтобы сказать, почему - я предполагаю, что это сделано для имитации некоторой скоростиотказ

...