目錄: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