我正在尝试学习MapReduce。 作为一个玩具问题,我有一个线数据集,每行看起来像:“名称,favourite_team,friend1,friend2,...,friend_n”。 例如:

Aaden, Red Sox, Alannah, Alayna, Alex, Aaliyah
Aaliyah, Cardinals, Adley, Aliyah, Aaden

我想使用MapReduce为每个人查找红衣主教的粉丝朋友的数量。

为此,我可以使用MapReduce制作一组Cardinal的粉丝。 我现在想做的是在每台机器上分发此数据集,然后将原始数据与此数据集一并映射到每个人的红衣主教的粉丝朋友数。

我怎样才能做到这一点? 这是范式的正确使用吗? 他们给了一个例子的解决办法是在这里 ,但它比我预期的做法不同。

Hadoop和MapReduce中有一个称为DistributedCache的东西。 也许这会有所帮助?

以供参考:

这是我创建一组红衣主教粉丝的方式:

from mrjob.job import MRJob

#prelim: just get a set of cardinal fans and non-cardinal fans
class MRCardinal(MRJob):
    def mapper(self, key, line):
        s = line.split(", ")
        name = s[0]
        team = s[1]
        friends = s[2:]
        if team == 'Cardinals':
            yield 'c', name
        else:
            yield 'n', name
    def reducer(self, key, values):
        if key == 'c':
            yield key, [v for v in values] #don't return a generator.
        if key == 'n':
            yield key, [v for v in values]
    # now we have a list of values, and a set

if __name__ == '__main__':
    MRCardinal.run()

  ask by Jack translate from so

本文未有回复,本站智能推荐:

1回复

Hadoop MapReduce-Null指针接收中的DistributedCache

我已经使用分布式缓存来存储文件。 但是我正在使用此获取NullPointerException 。 任何人都可以帮助解决这个问题吗? 文件名作为参数给出。 我得到的错误日志是:
1回复

Map Reduce分布式缓存

我无法在job.waitforcompletion(boolean)子句上编译我的DriverClass。它给我一个NoClassFoundException。如果我捕获到该异常,则run方法会抛出它期望一个int值的错误。我正在使用MapReduce New API。任何人都可以提出问题的答案
1回复

Hadoop中的mapred.child.javaopts参数-读取序列化的HashMap

我有一个1.5 GB的文件,其中包含序列化的HashMap。 我在Mapper类中有一个setup()方法,将其读入HashMap变量。 看起来它能够转到read方法,但是立即为任务抛出了Java堆空间错误。 我阅读了许多讨论,我们可能需要设置mapred.child.opts
1回复

作业期间更改了Hadoop分布式缓存对象

我有许多顺序的Hadoop作业,其中需要一个DistributedCache文件。 驱动程序类(控制器)从上一个作业接收输入,修改文件,将其放置在DistributedCache中,然后开始新的作业。 在完成第一项工作(即第二项工作)后,出现以下错误: 有谁知道可能是什么问题
2回复

在Apache Ignite中将数据从一个节点移动到同一集群中的另一个节点

在一个由8个节点组成的基准集群中,分区模板中的数据没有备份。 假设我在SampleTable(@Cache)的所有8个节点中平均有28K个条目。 总数据= 28K * 8 = 224K条目。 用“ template = partitioned”创建表SampleTable(....)
1回复

为什么在hazelcast Map中违反了Map的一般合同,该合同要求在比较对象时强制使用equals方法

这更多是一个设计问题。 我想知道为什么hazelcast使用对象的二进制(序列化)形式的hashCode()和equals()而不是复合键对象提供的形式。 我遇到了一个问题,我不得不将一些元数据( lastModifiedTimeStamp , lastModifiedNode等)与键对
1回复

常识性问题:网络访问时间,缓存访问时间,磁盘访问时间

我已经编写了一个基于客户端服务器的分布式文件系统的模拟器。 现在要计算平均块访问时间,我需要以下几点: 本地缓存访问时间 客户端到客户端缓存访问时间(同一网络) 客户端到服务器的缓存访问时间(不同的网络) 客户端到磁盘的访问时间 假设块大小为64MB
2回复

有关一致性哈希的一些后续问题

我通读了几篇文章,解释了一致性哈希背后的理论。 但是其中大多数都没有提供有关如何处理添加/删除节点的详细信息。 我知道是否将其用于像memcached这样的缓存层中,我们可能不需要做任何事情,但是如果将其用于分布式存储中,则将一些数据移至正确的节点非常关键。 当我们需要添加/删除节点时到底