当前位置: 首页 > 知识库问答 >
问题:

Apache BEAM实现一个无界源-BEAM如何决定创建了多少读卡器?

法玮
2023-03-14

为了使用自定义数据源(基于公司内部基于订阅的Java API),我正在实现一个无界恐惧者。当我执行管道时,我注意到创建了多个无界恐惧症实例。BEAM如何决定调用

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

UnboundedSource的方法?

My 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个答案

束俊材
2023-03-14

我做了一些挖掘并阅读了直接运行程序源。它被编写为随机关闭现有阅读器(概率为5%)并强制恢复检查点:https://github.com/apache/beam/blob/a679d98cbcc49b01528c168cce8b578338a5bcdd/runners/direct-java/src/main/java/org/apache/beam/runners/direct/UnboundedReadEvaluatorFactory.java#L150

没有评论说明原因-我的猜测是这样做是为了模拟某种失败率

 类似资料:
  • 所以我不确定是0还是2。 如果有人知道请告诉我。

  • 我对这个还不熟悉,我误解了Gunicorn烧瓶的工作原理。 当我用4个工人运行Gunicorn时,它会创建我的Flask应用程序的4个实例,或者它会创建4个进程来处理来自Nginx的web请求和一个Flask应用程序实例? 如果我在我的应用程序中简单地实现内存缓存(例如字典),Gunicorn会创建多个应用程序实例,从而创建多个缓存实例吗?

  • 我试图从一个读取。我写了下面的代码 我不明白的是我应该在一次迭代中读取多少字节?流包含保存在磁盘上的文件。 我在这里读过,但我并不真正理解这篇文章。

  • 问题内容: 我正在使用和在CSS中创建一个半透明的圆圈。 在这个圆的周围,我希望有另一个完全透明的边界(例如10个像素),而又想有另一个半透明的边界(10个像素)。 这是我创建圈子的方式: 我需要怎么做才能在现有边界周围创建另一个边界,然后再创建另一个边界? 问题答案: 您可以使用简单的边框并将背景裁剪到,以在填充区域中创建透明部分: 您也可以考虑 您可以轻松缩放到任意数量的边界:

  • 我厌倦了下面的片段,得到了3个对象和3个引用的答案。但在回答键中说,这是4个对象和3个参考。我不知道是我错了还是回答键错了。请有人帮忙。 我的答案解释: 参考文献:str1、str2、str3。因此引用数=3。 对象:最初创建的对象计数=0。 第1行创建值为Java并引用str1的新对象。对象创建计数=1。 第2行创建值为“GFT”并引用“str2”的新对象。对象创建计数=2。 第3行创建新引用“

  • 如果我们使用 那么创建了多少对象,它们驻留在哪里?