我想为大型数据集生成ngram频率。维基百科,或者更具体地说,Freebase的WEX适合我的目的。
在接下来的一天左右,最好和最具成本效益的方法是什么?
我的想法是:
我对Hadoop的体验包括在三个EC2实例上非常低效地计算Pi。我很擅长Java,我理解Map + Reduce的概念。 PostgreSQL我担心会花很长时间,因为它不容易并行化。
还有其他方法吗?在接下来的几天里完成它的最佳选择是什么?
答案 0 :(得分:2)
Mapreduce可以正常工作,也许你可以通过猪进行大部分输入输出改组。
见
http://arxiv.org/abs/1207.4371
对于某些算法。
当然,为了确保你有一个跑步开始,你实际上并不需要使用mapreduce来完成这项任务;只需自己拆分输入,制作最简单的快速程序来计算单个输入文件的ngrams并稍后聚合ngram频率。
答案 1 :(得分:2)
Hadoop为您提供了两件好事,这在我看来是主要的:parralell任务运行(仅映射作业)和分布式排序(在地图和减少之间的混乱)
对于NGrams来说,看起来你需要两个 - parralel任务(映射器)发出ngrams和shuffling - 来计算每个ngram的数量。
所以我认为Hadoop是理想的解决方案。