选择与 Hadoop 用户列表匹配的记录
Posted
技术标签:
【中文标题】选择与 Hadoop 用户列表匹配的记录【英文标题】:Select records matching a list of users with Hadoop 【发布时间】:2012-06-19 18:36:55 【问题描述】:作为学习 hadoop 的一部分,我正在使用来自 twitter 流 API 的大量推文开展一个项目。在大约 2000 万条推文中,我生成了 N 个最活跃用户的列表,我想尝试根据他们所有推文的文本对其进行聚类。
所以我有一个几千个用户名的列表,我想做的是将每个用户的所有推文的内容连接在一起,最终为每个用户生成一个字数向量。
我不知道如何完成连接。我希望能够编写一些映射器来接收每条推文行,并说“如果这条推文来自我感兴趣的用户,则使用键用户名和值 tweetText 映射它,否则忽略它。”然后,reducer 可以很简单地像我想要的那样连接推文。
我的问题是,如何将我感兴趣的大量用户告诉映射器?如果映射器可以拥有一个包含所有用户的 Hashtable 似乎会很好,但我不知道这是否可能。
有没有什么好的方法可以做到这一点,还是这个问题不适合 Map/Reduce?
【问题讨论】:
【参考方案1】:噢,没关系。我一直在考虑这个问题,但是一旦我把它写在这里,我意识到我认为我应该怎么做。我无需列出所有拥有 X 条推文的用户,然后再次查看数据并尝试找到他们的推文,我可以一次完成所有操作。
目前我正在映射 [username,1],然后让 reducer 将所有 1 相加以生成推文计数。然后我尝试找到所有用户的推文超过 X 条的推文。
要一次完成所有操作,我应该映射 [username,completeTweet],然后让 reducer 连接并仅为拥有超过 X 条推文的用户输出数据,而忽略其他用户。
【讨论】:
以上是关于选择与 Hadoop 用户列表匹配的记录的主要内容,如果未能解决你的问题,请参考以下文章
单个单元格中的计数或总和(?)项目,与Excel中的列表中的条件匹配
当这些行与列表中的所有值匹配时,从 Python 中的 DF 中选择行