清管器文件说明,如果满足某些条件(这些条件在文档中有描述),清管器可以做Map侧 GROUP . 有人能解释一下这个算法吗?我想深入了解mapreduce可以做什么。
GROUP
wd2eg0qa1#
例如,想象下面的文件:
10 - 1 14 - 2 10 - 3 12 - 4 12 - 5 20 - 6 21 - 7 17 - 8 12 - 9 17 - 10
然后,负载将存储您的文件,如下所示(假设您的集群有3个节点-如果您使用identity map reduce作业,那么您可以通过将reduce数设置为3来获得相同的结果)。如果您的文件是skweed,您可能会有一些性能问题)。用于此操作的加载程序必须保证它不会将一个键的单个值拆分为多个拆分(http://wiki.apache.org/pig/mapsidecogroup)
part-r-00000 part-r-00001 part-r-00002 10 - 1 14 - 2 20 - 6 10 - 3 17 - 8 21 - 7 12 - 4 17 - 10 12 - 9
现在,hadoop框架将为生成的每个分区生成一个map任务。我在本例中使用了3个map任务。假设你要对第二个字段求和,这个过程可以在map端运行。
part-m-00000 10 - 17 12 - 13 part-m-00001 14 - 2 17 - 18 part-m-00002 20 - 13
在cogroup的情况下,我想这将以类似的方式执行。每个map任务将在具有相同密钥的两个文件分区中操作。
m3eecexj2#
您可以阅读算法的源代码。一个简单的答案是,两者都实现了一个合并算法(即,数据必须按组键进行高级排序,以便(a)不需要排序,(b)通过对数据进行迭代,您可以找到组键更改的位置)。
2条答案
按热度按时间wd2eg0qa1#
例如,想象下面的文件:
然后,负载将存储您的文件,如下所示(假设您的集群有3个节点-如果您使用identity map reduce作业,那么您可以通过将reduce数设置为3来获得相同的结果)。如果您的文件是skweed,您可能会有一些性能问题)。用于此操作的加载程序必须保证它不会将一个键的单个值拆分为多个拆分(http://wiki.apache.org/pig/mapsidecogroup)
现在,hadoop框架将为生成的每个分区生成一个map任务。我在本例中使用了3个map任务。假设你要对第二个字段求和,这个过程可以在map端运行。
在cogroup的情况下,我想这将以类似的方式执行。每个map任务将在具有相同密钥的两个文件分区中操作。
m3eecexj2#
您可以阅读算法的源代码。一个简单的答案是,两者都实现了一个合并算法(即,数据必须按组键进行高级排序,以便(a)不需要排序,(b)通过对数据进行迭代,您可以找到组键更改的位置)。