论文部分内容阅读
在传统企业中,无论是用于支撑业务的应用系统还是用于数据分析的数据仓库,大部分都建立在Oracle、MySQL等传统关系型数据库(RDBMS)之上。随着传统企业向互联网化、智能化、数据化方向转型,存储和处理的数据也日益膨胀,RDBMS的性能趋于瓶颈。RDBMS存在的问题是扩展性差或者扩展成本过高,在面对大数据问题时,显得能力不足,而Hadoop分布式计算架构具有高吞吐量、高性能、高扩展性、低成本等特点,成为很多企业用来替代RDBMS存储、计算和查询大规模数据的有效方案。在传统企业中存在大量基于RDBMS的遗留应用,如果将底层数据存储架构从RDBMS转为Hive等Hadoop存储系统,那么需要解决两个主要问题:一是大量数据的快速迁移,二是数据访问层中SQL语句的改写。 本文首先研究和讨论了Hadoop、Hive、Spark等分布式技术和ETL等数据仓库技术。然后为了解决上述两个问题进行了如下的研究: (1)针对第一个问题,本文提出了一种基于Spark SQL的分布式ETL过程,并实现了数据迁移工具DFMover。Hive表根据用户设置的逻辑数据映射被自动创建,基于SparkSQL的ETL作业根据用户配置的参数和编写的转化过程自动生成并被提交到Spark集群中运行。通过SparkS QL可以很方便地实现数据迁移的并行化,加快数据迁移的效率,同时与DataX和Sqoop等数据同步工具进行了参数对比,在TPC-DS上进行的迁移实验表明Spark SQL迁移数据具有较好的性能,并可以通过适当调节numPartitions等参数实现性能优化。 (2)针对第二个问题,本文在查询图模型QGM的基础上结合查询树的特点,提出了一种新的查询语句表示方法EQGM,并基于EQGM实现了SQL到HiveQL的自动翻译工具QGMapper。QGMapper通过SQL解析器将SQL语句转化为查询树,再根据列、表、子查询之间的关系将查询树转化为扩展查询图模型(EQGM)。本文提出的8种不同类型的重写规则,通过调整EQGM结构转换查询树,最后生成正确的HiveQL语句。在TPC-DS上进行的查询实验证明,QGMapper可以正确翻译绝大多数的SQL查询语句并具有较强的扩展性。