gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:51:38 25 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

提前致谢,干杯:))

最佳答案

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

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

关于hadoop - Pig 如何从第一个 Job 和它的下一个 Job 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32581858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com