调用Apache Crunch管道在两个不同的源上读取两次会发生什么?

时间:2018-05-24 06:49:34

标签: hadoop pipeline apache-crunch

拨打以下电话时:

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

根据Apache Crunch阅读文档,用于从两个源读取的管道是否相同,然后将数据连接在一起?

1 个答案:

答案 0 :(得分:0)

Apache Crunch Pipeline可以根据需要读取任意数量的源,然后您可以根据需要开始转换数据,例如PCollections联合,通过DoFn或MapFn传递源,以便使用MapReduce进行Documents对象组合,许多其他人。

您需要记住的一件事是,与Apache Spark相同的Apache Crunch使用延迟执行模型,这意味着在执行操作之前不会触发任何数据转换过程。下面我引用Crunch documentation的一小部分来讨论它。

  

Crunch使用延迟执行模型。没有作业运行或创建输出   直到用户显式调用Pipeline上的某个方法   控制工作计划和执行的界面。最简单的   这些方法是PipelineResult run()方法,它分析了   PCollections和Target输出的当前图表,并提供了一个   计划确保创建每个输出然后执行   它,仅在作业完成时返回。 PipelineResult   run方法返回包含有关运行的内容的信息,   包括管道期间执行的作业数量   通过运行和每个阶段的Hadoop计数器的值   StageResult组件类。

回答你的问题,是的,相同的管道将读取两个来源。

旁注:您可能希望只有一个管道用于数据转换。