巧用复合键优化倒排索引程序
之前写了一个倒排索引的程序,但是可以注意在到生成的索引文档中,一个单词对应的文档并非是按照词频的大小进行排列的。这不是我们最想要的结果,我们希望对应的文档按照词频的大小进行排列。
这里我们使用复合键来完成对文档的排序。
巧用复合键可以达到一些优化效果,比如说将多个细粒度的键值对合并为一个处理度的键值对,这样可以减小集群中网络的开销。
比如:
可以优化为:<a,<b:1,c:3,d:5,e:8,f:4>>
上面的例子将5个<K,V>优化为一个<K,V>,减小了网络的开销。特别是当数据量很大的时候,这样合并的机会就会很多。优化的效果也会很客观。
当然,我们亦可以使用复合键来完成排序功能。
在倒排索引中,我们希望单词对应的文档按照词频大小来排列。但是如果在本地进行排序的话往往因为数据量很大而出现各种问题。此时,我们想到MapReduce框架,在Mapper过程中,框架会自动进行排序。
因此,我们将要进行排序的词频和原来的K一起,组成复合键作为Reducer的输入。因此可以看到在Combiner类中,输出发生变化。如图:
好了,接下来我们该写reduce()方法了,我们需要按照词频输出单词所在的文档,而实际上,reduce()的输入已经是按照词频输入了。因此,我们看下面伪代码:
MyReducer class start
String preKey=null;
String preValue="";
Reduce method start
if(preKey==null)
给preKey和preValue赋值
if(preKey!=null)
if(preKey.equals(strs[0])){
为preValue添加内容
}
if(!preKey.equals(strs[0])){
将preKey和preValue输出
重置preKey和preValue的值
preKey = strs[0];
}
}
}
Reduce method end
将preKey和preValue输出
MyReducer class end
至此,代码优化工作已将完成,但是,问题又来了,因为Combiner输出的时候K值包含词频,所以如果按照原来的方式Shuffle的话,会将统一单词映射到不同的Reducer中,显然这是不对的,因此,我们重写getPartition()方法。伪代码如下:
MyPartitioner class start
getPartition method start
调用HashPartitioner类的getPartition()方法,并将从K中提取出的单词那部分作为参数
getPartition method end
MyPartitioner class end
优化的代码见附件。
相关推荐
复合材料结构优化 遗传算法 改进的遗传算法
复合材料铺层顺序优化 求解最佳铺层顺序得到最大极限荷载
Matlab优化方法中复合形法程序有需要的可以来下-minconSimpSearch2.rar 在做复合形法优化时,用到《精通MATLAB最优化设计》一书中的复合形法程序,发现做其他例题时运行不了。 去掉bug后,改进如下,如果你遇到...
基于MATLAB的复合形法多目标最优化软件,可用于各种多参数目标的优化计算。
复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型复合肥料生产的优化模型...
stm32做的 usb转键盘+HID复合设备,即插即用
因此,在设计和使用MySQL数据库时,了解如何使用和优化索引非常重要。 一个索引是一种数据结构,可以快速定位和访问表中的数据。MySQL支持多种类型的索引,包括B树索引、哈希索引和全文索引等。正确选择索引类型...
基于改进粒子群优化算法的复合材料可靠性优化设计.pdf
SQLServer的复合索引学习.docx
最近小编在群里讨论sql优化的问题,今天小编给大家带来了Oracle复合索引与空值的索引使用问题小结,需要的朋友参考下吧
基于拓扑优化设计的宽频吸波复合材料.pdf
优化设计作业,复合型法求解,MATLAB编程。 文件包含案例、MATLAB求解程序流程图、MATLAB求解程序以及可行域作图 程序运行良好,结果可靠
matlab开发-复发神经网络的复合优化。演示如何使用复杂方法优化负载感应H的黑盒神经网络模型。
基于RBF神经网络的复合材料固化均匀性优化.pdf
传统的二级圆柱齿轮减速器的...在一般设计的基础上,以二级圆柱齿轮减速器的总中心距最小为优化目标,建立数学模型,以MATLAB软件平台,利用复合形法对二级圆柱齿轮减速器进行优化设计,所得结果表明比传统设计更为优越。
基于随机正态分布的铺层顺序优化 旨在求解复合材料极限荷载
一、 创建主键(主键=主键索引=聚集索引) 主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex...
本书以复合材料翼面结构为研究对象,按照涉及的关键技术进行组织,从优化模型、最优化理论、复合材料层合板优化方法、复合材料夹筋壁板优化方法、翼面结构布局优化方法、复合材料气动弹性剪裁设计等方面,对复合材料...