基于分布式索引的Spark SQL查询性能优化研究与实现

来源 :中国科学院大学 | 被引量 : 0次 | 上传用户:liongliong531
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着大数据的持续发展,内存计算技术愈发成熟,SQL-on-Hadoop技术也得到进一步提升,基于分布式数据存储的SQL查询逐渐成为一种新的大数据分析方式。业界也涌现出了多个具有代表性的分布式SQL查询平台或引擎,如Apache Hive、Facebook Beringer、Spark SQL等。这些分布式查询引擎由于应用场景各有差异,在不同查询上体现的效率也各种千秋。本文充分考虑分布式SQL查询的应用场景以及计算平台的效率优势,针对Spark SQL分布式查询优化展开了研究。  本文提出了基于海量Parquet文件构建分布式可拔插索引的方法。Parquet是一种高效的列式存储格式。本文通过将索引和数据分离的策略,离线扫描海量Parquet文件,将文件、文件ID、文件存储路径形成映射关系,压缩存储在Redis集群中。为了保证索引的正确性和一致性,引入了元数据管理模块,并将索引持久化到硬盘。在索引更新过程中,可基于快照快速同步更新,同时保证索引无冗余,减少索引过大对存储的影响。  为实现基于分布式索引的Spark SQL查询优化,本文提出了基于分布式索引的RDD(Resilient Distributed Datasets)分区裁剪策略。在Spark SQL查询过程中,首先基于分布式索引进行查询,然后通过对比返回的命中文件集合与原始RDD文件集合,对RDD分区进行裁剪。通过缩减分区文件数量,减少了Spark SQL需要扫描的数据集,加速了整个Spark SQL查询。  为了连接分布式索引和分布式查询,本文基于Django WEB框架实现了索引查询服务Djindex。对于查询客户端下发的SQL语句,Djindex服务先对SQL进行语义解析,对于不能利用索引加速查询的语句,将直接发送给Spark SQL查询;对于可以利用索引加速的查询,则提取查询谓词,转换成索引服务可识别的查询关系,并分布式下发查询给索引存储服务。在索引返回阶段,对命中的文件进一步去重,精简数据集,然后返回给Spark SQL查询。对于无命中记录的索引查询,Djindex服务会将结果直接返回给客户端,避免数据扫描,提升查询性能。  总的来说,本文基于分布式可拔插索引构建技术和分布式Spark SQL查询规划技术,实现了优化后的Spark SQL查询引擎。实验表明,经过索引优化后的Spark SQL查询引擎在等值查询、集合查询、模糊查询、多表连接查询和多条件组合查询等方面具有明显优势。此外,优化后的分布式Spark SQL查询框架也具有良好的可扩展性和强大的容错能力。
其他文献
即时通信应用已成为日常生活中使用极其频繁的社交软件之一,并发挥着重要的作用。然而,在用户之间交换消息的过程中不可避免会出现隐私泄露,并有可能对利益相关者的生活造成严重
智能优化算法近几年来广受关注,诸如“人工神经网络”、“混沌”、“遗传算法”,“禁忌搜索”等智能优化算法涉及到数学、物理学、生物学等各学科,为解决复杂问题提供了新的方法
互联网技术和信息技术的发展,使得企业之间的竞争越来越激烈,客户成为企业最为重要的资源之一,而客户关系管理正是一种以客户为中心的经营理念。 本文首先介绍了客户关系管理
流媒体是一种在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件.流式媒体在播放前不需要下载整个文件,只要将开始部分内容存入内存即可.流式
计算机支持的协同图形设计通过建立一个具有群体性、交互性、分布性和协作性的人机网络工作环境,来协助多个地理上分散的用户对一个大型的工程进行共同图形设计,它是CSCW的一
该文提出了一种基于Web Service的灵活的工作流管理系统e_ScopeWork的体系结构.这种体系结构是可以根据用户的需求而灵活变化的.此外该文讨论了面向大规模复杂应用的工作流管
P2P的结构由于代表网络中相互对等的节点能够相互传递信息,共享资源,充分利用peer节点的资源优势,同时具有相当大的灵活性(用户可以动态加入网络),最近几年锋芒毕露,在网络内
产品创新软件进化模块利用面向对象的软件开发技术实现了包括选择进化路线,进化模式,数据库检索,为用户快速、准确地定位解决问题的原理和实例,提供用户产品设计的最佳方案等功能
嵌入式Internet(Embedded Internet,EI)技术的不断发展与成熟,推动了人与设备、设备与设备之间的互联,实现了各类计算资源和各种设备的共享化,使得支持网络应用的嵌入式软件
虚拟化技术是云计算的关键技术,Docker作为一种轻量级、高性能的虚拟化技术在云计算领域得到越来越广泛的应用。CoreOS是基于Docker的新型容器化集群服务器操作系统,发展迅速,已