Pig如何从第一份工作及其下一份工作传递数据

时间:2015-09-15 08:59:26

标签: hadoop mapreduce apache-pig hdfs distributed

众所周知,Apache Pig是一种数据流语言。如果我写了一个Pig Script并且Pig决定拆分并运行两个或多个作业来执行手头的任务,那么Pig如何存储它从job1传递给作业2的数据。???

我读了猪文档,上面写着: -

Pig会在达到内存限制时分配一定数量的内存来存储行李并溢出到磁盘。这与Hadoop决定何时溢出合并器累积的数据非常类似。

(网址:http://pig.apache.org/docs/r0.9.1/perf.html#memory-management

因此,Pig有一个编写器,它将中间作业的输出存储在内存/ RAM中以获得更好的性能(如果需要,可以溢出到磁盘)然后如果PIG实现了一个Reader,它直接从内存读取数据以传递该数据到下一个处理工作???

在Mapreduce中,我们将整个数据写入磁盘,然后再次读取它以便开始下一个作业。

Pig在这方面有优势,通过实现在RAM /内存中写入的读取器和写入器(如果需要可以溢出)并从RAM(如果需要,还有磁盘)读取以获得更好的性能。

请分享您对PIG文档中突出显示的评论的专业知识/观点,了解其实际含义或其他情况。

先谢谢, 干杯:))

1 个答案:

答案 0 :(得分:1)

如果pig脚本有多个作业,则每个作业的输出都写入HDFS中的临时文件夹,该文件夹由pig.temp.dir定义(默认为/ tmp)。请参阅Pig Docs"存储中间结果"。同时在运行脚本时执行row = service.insert(listFeedUrl, row); ,有时当作业中断时,这些文件夹不会被清理,需要手动释放。

行李的溢出是指Mapper阶段发生的事情,MR作业之间没有RAM通信。

相关问题