Apache BEAM实现了UnboundedSource-BEAM如何决定创建多少个读者?

时间:2019-02-27 09:57:35

标签: apache-beam apache-beam-io

我正在实现UnboundedReader以便使用自定义数据源(基于公司内部的,基于预订的Java API)。当我执行管道时,我注意到创建了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 :(得分:0)

我做了一些挖掘工作,并阅读了直接亚军来源。它的编写目的是随机关闭现有读取器(概率为5%)并强制恢复检查点:https://github.com/apache/beam/blob/a679d98cbcc49b01528c168cce8b578338a5bcdd/runners/direct-java/src/main/java/org/apache/beam/runners/direct/UnboundedReadEvaluatorFactory.java#L150

没有评论说出原因-我的猜测是它已经完成,可以模拟一定程度的失败