为大型数据集生成ngram频率

qv7cva1a  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(359)

我想为一个大数据集生成ngram频率。维基百科,或者更具体地说,freebase的wex适合我的目的。
在第二天左右做这件事的最佳和最具成本效益的方法是什么?
我的想法是:
postgresql使用正则表达式来分割句子和单词。我已经在postgresql中有了wex转储,并且我已经有regex来进行拆分(这里不要求主要的准确性)
使用hadoop的mapreduce
mapreduce和amazon的弹性mapreduce,我几乎一无所知
我使用hadoop的经验是在三个ec2示例上非常低效地计算pi。我擅长java,我理解map+reduce的概念。我担心postgresql需要很长很长时间,因为它不容易并行。
还有别的办法吗?在接下来的几天里我最好的办法是什么?

drnojrws

drnojrws1#

mapreduce工作得很好,可能您可以通过pig来执行大多数输入-输出洗牌。
看见
http://arxiv.org/abs/1207.4371
对于某些算法。
当然,为了确保开始运行,实际上不需要使用mapreduce来完成此任务;只需自己分割输入,制作最简单的快速程序来计算单个输入文件的ngram,然后聚合ngram频率。

izj3ouym

izj3ouym2#

hadoop提供了两个好处,在我看来主要是:parralell任务运行(仅Map作业)和分布式排序(map和reduce之间的无序排列)
对于ngram,看起来您需要两个任务:一个是parralel任务(mappers)来发出ngram,另一个是shuffling来计算每个ngram的数量。
所以我认为hadoop是理想的解决方案。

相关问题