0

作为尝试学习 hadoop 的一部分,我正在使用来自 twitter 流 API 的大量推文开展一个项目。在大约 2000 万条推文中,我生成了 N 个最活跃用户的列表,我想尝试根据他们所有推文的文本对其进行聚类。

所以我有一个几千个用户名的列表,我想做的是将每个用户的所有推文的内容连接在一起,最终为每个用户生成一个字数向量。

我不知道如何完成连接。我希望能够编写一些映射器来接收每条推文行,并说“如果这条推文来自我感兴趣的用户,则将其与关键用户名和值 tweetText 进行映射,否则忽略它。” 然后,reducer 可以很简单地像我想要的那样连接推文。

我的问题是,我如何告诉映射器我感兴趣的这一大用户列表?如果映射器可以拥有一个包含所有用户的 Hashtable 似乎会很好,但我不知道这是否可能。

有没有一个好的方法来完成这个,或者这个问题不适合 Map/Reduce?

4

1 回答 1

1

哦,没关系。我一直在考虑这个问题,但是一旦我把它写在这里,我意识到我认为我应该怎么做。我无需列出所有拥有 X 条推文的用户,然后再次查看数据并尝试找到他们的推文,我可以一次完成所有操作。

目前我正在映射 [username,1] 然后让 reducer 将所有 1 加在一起以生成推文计数。然后我试图找到所有用户的推文超过 X 条的推文。

要一次完成所有操作,我应该映射 [username,completeTweet] 然后让 reducer 仅连接并输出拥有超过 X 条推文的用户的数据,而忽略其他用户。

于 2012-06-19T18:47:45.970 回答