簡體   English   中英

當調用Apache Crunch管道在兩個不同的源上讀取兩次時會發生什么?

[英]What happens when calling Apache Crunch pipeline read twice on two different sources?

進行以下呼叫時:

    PCollection<KeyValue> data1 = pipeline.read(source1);
    PCollection<KeyValue> data2 = pipeline.read(source2);
    PCollection<KeyValue> data3 = data1.union(data2);

根據Apache Crunch閱讀文檔,用於從兩個來源讀取數據然后將數據連接在一起的管道是否相同?

Apache Crunch Pipeline可以讀取所需的任意多個源,然后可以開始轉換所需的數據,例如PCollections並集,將這些源通過DoFn或MapFn傳遞,以便使用MapReduce進行Documents對象組合等。

需要記住的一件事是,與Apache Spark一樣,Apache Crunch也使用了惰性執行模型,這意味着在執行操作之前不會觸發任何數據轉換過程。 在下面,我引用了Crunch文檔的一小部分內容。

Crunch使用惰性執行模型。 在用戶顯式調用Pipeline接口上控制作業計划和執行的方法之一之前,不會運行任何作業或創建任何輸出。 這些方法中最簡單的方法是PipelineResult run()方法,該方法分析PCollections和Target輸出的當前圖形,並提出一個計划以確保創建每個輸出然后執行它們,僅在作業完成時返回。 run方法返回的PipelineResult包含有關運行內容的信息,包括在管道運行期間執行的作業數,以及通過StageResult組件類針對每個階段的Hadoop計數器的值。

回答您的問題,是的,同一管道將讀取兩個源。

旁注:您可能只希望有一個管道用於數據轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM