目录:apache beam 个人使用经验总结目录和入门指导(Java)

编写beam程序的本质就是对pipeline管道进行创建和组装,最后再运行。

pipeline的创建

pipeline可以通过option创建。

Pipeline pipeline = Pipeline.create(option);

也可以先创建无option的管道, 之后再用不同赋值的option去运行

Pipeline pipeline = Pipeline.create();
....
....
pipeline.run(option1);
pipeline.run(option2);

pipeline的组装

// 组装Transforms子类
Pcpipeline.apply(Transforms...).apply(Transforms...)...

pipeline 组装后,就会变成PCollection数据集, 不过我们可以通过getPipeline()从PCollection中取出本数据集对应的管道。

Pipeline的执行

对pipeline调用run时,算是真正开始计算,且会返回1个PipelineResult用于监控结果

System.out.println("真正开始运行");
PipelineResult pipelineResult = pipeline.run();
while(!pipelineResult.getState().isTerminal()){
System.out.println("还在运行中");
Thread.sleep(10000);
}

上面的while循环等待可以用waitUntilFinish代替,此时就会进入阻塞态,直到运行结束waitUntilFinish才会返回。

System.out.println("真正开始运行");
pipeline.run().waitUntilFinish();
System.out.println("运行结束");

pipeline多次使用

如果本次pipeline.run()结束后,需要再apply新的transform操作进行计算, 则要注意重新创建pipeline, 否则之前apply的所有转化过程都是会保留

pipeline.apply(Transform1);
pipeline.run().waitUntilFinish();
pipeline.apply(Transform2);
pipeline.run().waitUntilFinish();

则上面的代码其实会先执行1次Transform1。 运行结束后,再执行1次Transform1和Transform2。
如果需要定义1个新的计算过程,则要用 Pipeline.create 重新创建pipeline