论文部分内容阅读
近年来,大数据领域的技术发展已经吸引了来自学术界和科技产业界甚至开发者社区越来越多的目光。如何针对密集性大数据高效的完成从数据获取到数据处理的一系列步骤,成为了大数据发展的主要挑战之一。谷歌提出的MapReduce框架虽然已经被证明可以解决一部分大数据问题,但是随着更深入的使用,更多的应用则将其处理过程效率低下的缺点暴露无遗。为了解决效率问题,有研究者提出了MapReduce的替代品Spark。Spark SQL作为Spark中新加入的模块,为用户提供结构化数据操作接口的同时,还集成了丰富的开发库以供编程人员调用。用户可以借助Spark SQL完成简单的数据操作,流程较为简便,因此Spark SQL迅速成为Spark中使用范围最为广泛的模块之一。然而Spark SQL也存在很多的不足之处。它所支持的两种Context:SQLContext和HiveContext,也都或多或少地存在一定问题。其共有的问题主要包括两点。第一,不支持标准的SQL语法。用户如果想进行数据操作,需要先花一定的时间去学习它所支持的特殊语法。一些调查表明,几乎所有的大数据研究者或者开发者都具有例如MySQL,Oracle等传统数据库的使用经验。他们对标准SQL语法更为熟知,更为希望可以直接在Spark平台上直接使用由标准SQL语法组成的语句。第二,这两者目前还存在很多功能性上的缺失。用户需要花费很多的时间精力去寻找其他方式来克服这些问题。这些不足都会对开发效率造成影响。本文提出了FlintStone,一个基于Spark构建的数据分析计算工具。用户可以借助FlintStone完成众多的数据计算查询操作。与Spark SQL相比,FlintStone主要有三方面的优势。第一,支持标准SQL(SQL:1999)语法,用户可以直接利用更为熟悉的语句来完成操作。第二,它支持更多的操作类型和数据类型。第三,在从语句分析到生成Spark任务的过程中,FlintStone会做一系列的优化。FlintStone可以被视为一座连通Spark与标准DML(数据操作语言)的桥梁。最后,本文将FlintStone提供的FlintContext与Spark SQL提供的两种Context分别进行了功能和性能上的对比。实验结果表明,在功能上,FlintStone可以支持标准SQL语法以及更多的操作类型和数据类型;在性能上,FlintStone同样有一定的提升。在对数据集进行Join类型操作时,FlintStone相比原生Spark SQL,性能上的提升可以达到10%左右。现阶段FlintStone已经完成了第一个版本的开发,同时已经在github平台上开源并贡献给了Spark社区。同时该项目也受到了来自Intel大数据部门专家的支持和维护。