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

osh3o9ms  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(416)

拨打以下电话时:

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

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

guykilcj

guykilcj1#

apache crunch pipeline可以读取任意多个源,然后可以根据需要开始转换数据,例如pcollections unions,通过dofn或mapfn传递源,以便使用mapreduce等进行文档对象组合。
您需要记住的一点是,apachecrunch和apachespark一样使用一个延迟执行模型,这意味着,在执行一个操作之前,不会触发任何数据转换过程。下面我引用了crunch文档中的一小部分内容。
crunch使用了一个延迟执行模型。在用户显式调用控制作业规划和执行的管道接口上的某个方法之前,不会运行作业或创建输出。这些方法中最简单的是pipelineresult run()方法,它分析pcollections和目标输出的当前图形,并提出一个计划来确保创建每个输出,然后执行它,仅在作业完成时返回。run方法返回的pipelineresult包含有关运行内容的信息,包括在管道运行期间执行的作业数,以及通过stageresult组件类为每个阶段执行的hadoop计数器的值。
回答你的问题,是的,相同的管道将读取两个源。
旁注:对于数据转换,您可能只需要一个管道。

相关问题