apache beam 入門之pipeline管道

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章