MongoDB之Hadoop驱动介绍

2014-11-24 18:44:16 · 作者: · 浏览: 0

3. 代码分析
运行其examples中的WordCount.java代码


这里没有实现对不同shard的split操作,也就是说,对于分布在不同shard上的数据,只会产生一个Map操作。
这里本人提供了一个分片的思路,有兴趣的可以讨论一下。


我们知道,对于Collection分块后,会产生一个Config数据库,在这个数据库下有一个叫做chunks的表,其中每个chunk记录了start_row与end_row,而这些chunk可以分布在不同的shard上,我们可以通过分析这个Collection来得到每个shard上的chunk信息,从而把每个shard上的chunk信息组合成一个InputSplit,这就是这里的MongoInputSplit,这样的话,只要去修改MongoInputFormat这个类的getSplits这个方法,加入对chunks表的分析,得到shard的信息,这样就可以实现多split的Map操作,对于不同的Shard,每个Map都会调用本地的Mongos代理服务,这样就实现了移动计算而不是移动数据的目的。