论文部分内容阅读
数据立方(Data Cube)是一种有效支持OLAP的多维数据计算模型。它通过预先计算数据表中各属性间所有组合对应的GroupBy结果并将其存储起来,以缩短系统的响应时间从而提高查询效率。随着数据量的急剧增长,分布式计算(如MapReduce)的使用日益广泛,将数据立方计算与分布式结合是必然的趋势。对于代数度量,如SUM等,简单地采用MapReduce框架即可高效地完成数据立方的计算。但对于整体性度量,如DISTINCT等,若与MapReduce简单地结合,则会出现负载不均衡、中间数据过多等问题。当前最好的分布式数据立方计算算法MR-Cube,通过数据划分、合并计算的方法减缓上述问题。但是该算法对数据划分不够精准,会导致一些不必要的数据划分,加重之后的合并操作。而对于合并计算,该算法仅提出了一些规则,而无简单且有效的合并方法,并且进行合并计算时使用BUC算法亦未充分利用MapReduce框架的特性。为了更好地解决负载不均衡、中间数据过多的问题,本论文借鉴TeraSort与PipeSort,提出TeraSortPipeSort-Cube算法(以下简称TSP-Cube算法)。TSP-Cube借鉴TeraSort随机抽样的思想,根据数据出现的频率对数据进行划分,不仅可以有效避免不必要的划分,并且适用于各种分布类型的数据集,从而有效解决负载不均衡的问题。同时TSP-Cube采用能充分利用MapReduce框架特性的PipeSort替代MR-Cube中的BUC进行合并计算,并且针对层次型的数据集,根据其属性特征以及PipeSort的特性,采用更简单有效且均匀的合并计算方案,从而解决中间数据过多的问题。论文通过实验证明,无论在均匀分布或是倾斜分布下,TSP-Cube在整体性度量函数中都有更好的性能,比已有的分布式算法更通用。此外,实验还对多种算法在代数度量下的性能进行了比较,从而得出不同类型的度量应采用的方法。