论文部分内容阅读
随着信息技术与其他科学技术的不断进步与飞速发展,各个不同的领域如今都无时无刻不在以惊人的速度产生着巨量的数据。如何利用这些数据和信息,挖掘更多潜在的财富,创造更多的价值,是当今计算机和数学领域研究的重大问题之一。也就是在这样的背景之下,“大数据”的概念也应运而生。借助数据挖掘、机器学习和数据可视化等技术,探究趋势并预测未来,成了大数据技术的精髓所在。然而,为了保证各种数据分析的产出的准确性,对数据的质量的控制是一个至关重要、不可忽视的环节。因此,在大数据技术的实际应用中,一半以上的时间都会花在数据清洗上。另一方面,随着数据规模的扩大,以及数据源和数据类型多样性的出现,如何设计一套高效率、高通用性的数据清洗系统,也是我们需要探究的关键问题。本文基于专用于海量数据处理的分布式计算引擎Spark,设计并实现了一套极具特色的数据清洗系统。该系统通过业务组件封装数据清洗过程中的特定业务逻辑,并将其作为整个数据清洗流程的连接单位。为了解决数据清洗业务组件之间的数据传递问题,本文对Spark原生的应用程序提交方式进行了深入分析,并在此基础上进行改进,从而实现了基于全局SparkContext与Spark内置解释器对象的业务处理机制,以支持交互式数据清洗及全局数据共享。为了与该业务处理机制高度契合,设计并实现了一种解释器结构,并在此结构的基础之上,定义了以字符串数组封装代码为核心的业务组件结构规范。基于上述结构规范,实现了一系列业务组件,并提供了业务组件的扩展接口。该系统对业务组件的处理支持两种方式,一是编辑参数并依次单步提交执行,二是编辑参数后拖放控件并组合成有向无环图形式的业务规则示意图,再交由系统处理。为了保证业务规则示意图处理的鲁棒性和正确性,本文基于深度优先遍历的思想,以检查系统使用者定义的业务规则示意图中是否含有导致业务流程进入死循环的环路结构。此外,还提出了“反向广度优先遍历”的方法,用于决策业务组件的执行顺序,并对业务流程的实际执行效率提出了一种基于Spark原生缓存技术的优化方法。实验证明,本系统在一定程度上解决了数据清洗的性能、可扩展性、可伸缩性和易用性问题,具有较高的实际应用价值。