PIG:如何有效地加载和过滤大型数据集?

PIG: how to efficiently LOAD and FILTER a large dataset?

我有一个很大的数据集,分为许多 200GB 的数据块。

目前我正在努力用 Pig 处理数据。 事实上,我的集群很小(4 个节点)。我认为一个可能的瓶颈是当我加载数据时,因为我只需要我拥有的 2TB 数据的一小部分。

具体来说,我想知道

加载整个数据集,然后过滤

 A = load ‘data_part*’ as (x, y);
 A = FILTER A by x>0

效率低于

加载每个块,过滤每个块并将所有内容附加在一起

 A1 = load ‘data_part1’ as (x, y);
 A1 = FILTER A1 by x>0

 A2 = load ‘data_part2’ as (x, y);
 A2 = FILTER A2 by x>0

A = UNION A1, A2;

如果是这样,那为什么呢?

我没有在文档中找到任何提示。我现在也不能直接用我的数据尝试这个。如果有人可以在这里提供帮助,那就太好了!

非常感谢!

我想说两者的表现是一样的。只有当您有商店或转储时,才会启动 map reduce 作业。你应该看看 where exactly PIG stores its relations

如果筛选的数据很小,那么尽早应用筛选器不会增强 performance.One 最佳做法是尽早并经常筛选。请参阅此处以通过应用过滤器 FILTER EARLY AND OFTEN

来提高性能

我认为第二个会更有效率。

在程序的逻辑构建过程中,PIG 将检查所有语句。当它看到转储或存储命令时,我将启动 map-reduce 程序。 现在在第二个场景中——你已经给出了 2 个过滤语句。这意味着将有强制性的 2 个减速器。因此,如果将映射器和缩减器的数量设置为默认值,效率会更高。

我不太确定我的 ANSWER.PLEASE 如果您有新发现,请告诉我。