Pig 如何从第一个 Job 和它的下一个 Job 传递数据

How does Pig Pass Data from First Job and its next Job

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

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

"Pig 分配固定数量的内存来存储包,并在达到内存限制时立即溢出到磁盘。这与 Hadoop 决定何时溢出组合器累积的数据的方式非常相似."

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

那么 Pig 是否有一个写入器将中间作业的输出存储在内存/RAM 中以获得更好的性能(如果需要则溢出到磁盘)然后如果 PIG 实现了 Reader 直接读取数据从内存中将该数据传递给下一个作业进行处理???

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

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

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

提前致谢, 干杯:))

如果 pig 脚本有多个作业,则每个作业的输出将写入 HDFS 中的一个临时文件夹,该文件夹由 pig.temp.dir 定义(默认为 /tmp)。参见 Pig Docs "Storing Intermediate Results"。此外,当 运行 脚本执行 hadoop fs -ls /tmp/pig* 时,有时当作业中断时,这些文件夹不会被清理,需要手动释放。

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