我正在实现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;
}
是否有一种方法只能强制创建一个阅读器?
答案 0 :(得分:0)
我做了一些挖掘工作,并阅读了直接亚军来源。它的编写目的是随机关闭现有读取器(概率为5%)并强制恢复检查点:https://github.com/apache/beam/blob/a679d98cbcc49b01528c168cce8b578338a5bcdd/runners/direct-java/src/main/java/org/apache/beam/runners/direct/UnboundedReadEvaluatorFactory.java#L150
没有评论说出原因-我的猜测是它已经完成,可以模拟一定程度的失败