论文部分内容阅读
科学技术的发展以及互联网的普及推动着大数据时代的到来,全球每天都在产生海量的数据,数据的计量单位己从Byte、KB、MB发展到了 PB、EB甚至于YB、BB。面对如此众多的数据,大数据分析成为一个研究热点,同时以Hadoop、Spark为首的大数据处理平台应运而生。Spark SQL是Spark中用于处理结构化数据的模块,它提供的表连接操作性能较低,但在大数据的分析中大表等值连接操作又使用频繁,因此,本文针对Spark SQL中的等值连接算法进行了优化。论文针对现有等值连接算法不能适用于不同场景的问题,提出一种基于扩展Partial Bloom Filter的等值连接优化算法EPBF Join算法,该算法的优化主要体现在两个方面:首先,EPBF Join算法对Partial Bloom Filter数据结构进行扩展,使之能够并行计算从而减少数据过滤阶段消耗的时间,提高整体连接性能;其次,EPBF Join算法能够根据数据量的大小自动改变位数组的个数,使之满足数据量未知的场景,从而实现了同时适用于数据量己知和数据量未知两种应用场景。论文针对等值连接操作在数据倾斜情况下性能较低的问题进行重点研究,提出了一种基于Space-Code Bloom Filter的可预估数据倾斜的等值连接优化算法SCBF-ESD Join算法。该算法的优化及其创新性工作主要体现在四方面:第一,SCBF-ESD Join算法提出一种新的基于SCBF的过滤策略,在完成数据过滤基础上,能够同时获取有效连接属性的频数,为计算数据倾斜程度带来便利。第二,SCBF-ESD Join算法对等值连接流程进行优化,增加了判断数据倾斜和减少数据倾斜阶段,使之无论在数据是否倾斜的情况下都能够适用;第三,在判断数据倾斜阶段提出一种新的数据倾斜程度计算策略,可以根据有效连接属性的频数来计算过滤后的数据倾斜程度;第四,在减少数据倾斜阶段提出一种添加前缀再分区策略,将随机添加前缀法与一致性哈希算法相融合,实现了重复属性的分散和再分区,降低了数据倾斜对连接算法性能造成的影响。论文分别从理论和实验两个方面对提出的两种优化算法进行了分析和验证。首先通过代价分析验证了两个优化算法在理论上的有效性,然后完成多组对比实验。实验结果表明,EPBF Join算法无需关心数据量大小就可以进行高效的连接;SCBF-ESD Join算法无论是否存在数据倾斜,都能通过预估数据倾斜程度,采用不同的操作,从而取得较好的连接性能,验证了所提出的数据倾斜程度计算策略和添加前缀再分区策略的有效性。