通过Java和MapReduce构造文档项矩阵

本文探讨了如何使用Java和MapReduce在Hadoop上构建文档术语矩阵。作者提出了两种方法,一种是通过HDFS上的术语索引列表查询,另一种是将索引列表附加到每个文档中。讨论了两种方法的优缺点,并提供了输入和输出文件格式的详细描述,以及最终解决方案的概述,涉及倒排索引的概念和辅助排序。
摘要由CSDN通过智能技术生成

背景:

 

我正在尝试使用MapReduce在Hadoop上的Java中创建一个“文档术语”矩阵.文档术语矩阵就像一个巨大的表,其中每一行代表一个文档,每一列代表一个可能的单词/术语.

问题陈述:

假设我已经有一个术语索引列表(这样我就知道哪个术语与哪个列号相关联),那么在每个文档中查找每个术语的索引的最佳方法是什么,以便我可以逐行构建矩阵行(即逐个文档)?

到目前为止,我可以想到两种方法:

方法1:

将术语索引列表存储在Hadoop分布式文件系统上.映射器每次读取新文档进行索引时,都会生成一个新的MapReduce作业-该文档中每个唯一单词的作业,其中每个作业都在分布式术语表中查询其术语.这种方法听起来有点过分,因为我猜测开始新工作会带来一些开销,并且由于这种方法可能需要数以千万计的工作.另外,我不确定是否可以在另一个MapReduce作业中调用MapReduce作业.

方法2:

将术语索引列表追加到每个文档,以便每个映射器以术语索引列表的本地副本结尾.这种方法在存储上非常浪费(术语索引列表的副本与文档一样多).另外,我不确定如何将术语索引列表与每个文档合并-我将它们合并在映射器中还是化简器中?

问题更新1

输入文件格式:

输入文件将是包含所有文档(产品评论)的CSV(逗号分隔值)文件.文件中没有列标题,但是每个评论的值按以下顺序显示:product_id,review_id,评论,星号.下面是一个伪造的示例:

 

“Product A”, “1”,“Product A is very, very expensive.”,”2”

“Product G”, ”2”, “Awesome product!!”, “5”

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值