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