apachebeam中工人的切入点是什么?(称为什么方法?)



Apache beam有大量优秀的文档,但我看不到创建管道所运行的代码与工作人员运行的代码之间的关系。我想我看到这个代码会运行一次,但它也会由每个启动的工作人员运行吗。。

public static void main(String[] args) {
// Create the pipeline.
PipelineOptions options =
PipelineOptionsFactory.fromArgs(args).create();
Pipeline p = Pipeline.create(options);
// Create the PCollection 'lines' by applying a 'Read' transform.
PCollection<String> lines = p.apply(
"ReadMyFile", TextIO.read().from("gs://some/inputData.txt"));
}

这是一个很好的问题,也是Apache Beam的核心

tl;dr没有用户定义的入口点,当工作人员启动时会调用该入口点。

长答案

当您使用Apache Beam SDK(使用applies等(进行编码时,您真正要做的是在后台创建一个包含所有应用转换的图,请参阅此处的文档。因此,一旦调用了p.run(),就将该图发送给要执行的工作者。然后,图上的转换被分解为组件,并按顺序执行。

至于你在问题中写的代码,它只会运行一次。当您执行jar时,该代码只运行一次。但是,图形中的转换是为数据中的每个元素运行的(或者更多,或者更少,取决于图形(。

如果您对转换和用户定义函数(ParDos(的执行方式感到好奇,那么这里的切入点就在Apache Beam SDK中。

相关内容

最新更新