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



我有一个很大的数据集,分为许多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;

如果是这样的话,为什么?

我在文件中找不到任何提示。我现在也不能直接用我的数据来尝试。如果有人能在这里帮忙,那就太好了!

非常感谢!

我认为两者的性能相同。只有当您有存储或转储时,才会启动地图缩减作业。您可能应该了解PIG将其关系

存储在何处

如果过滤的数据很小,那么尽早应用过滤器不会提高性能。最好的做法之一是尽早并经常进行筛选。请参阅此处,通过应用过滤器FILTER EARLY和OFTEN 来增强性能

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

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

我对我的回答不太确定。如果你有新发现,请告诉我。

最新更新