System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及硬件加速,尤其涉及一种基于数据处理单元读取列式存储文件的加速方法及装置。
技术介绍
1、sparksql是apachespark项目中的一个模块,它提供了一种用于结构化数据处理的高级数据处理接口,它可以让开发人员使用sql查询语言或dataframeapi对结构化数据进行查询、分析和处理。
2、目前业界主流的对于sparksql的硬件加速查询方案中,通常使用图形处理单元(graphicprocessingunit,gpu)进行计算,或者使用数据处理单元(dataprocessingunit,dpu)加速设备来加速特定的查询操作。
3、hados_race作为一个通用平台层,在内核处理单元(kernelprocessingunit,kpu)框架中,对接spark将特定的查询计算卸载到硬件中,来实现通用的硬件加速方案。其中,kpu是由中科驭数(北京)科技有限公司基于fpga(fieldprogrammablegatearray)硬件设计的高级计算框架,专注于提升fpga的计算性能,hados_race基于kpu框架作为高性能数据处理加速卡。
4、dpu板卡是一种可编程逻辑设备,可以在设计时或运行时根据需要进行配置和重配置,它可以实现并行计算和硬件加速,为数据处理提供高度自定义的计算能力。
5、现有常用的加速方案基于hados_race及dpu实现,主要包括以下几个步骤:首先,将查询语句转换成hados可以执行的模式;再将需要处理的数据通过内存总线或其他高带宽接口传输到数据
6、现有加速方案能够在硬件层面上提供高效的数据处理和计算能力,从而加速查询操作的执行过程。但通过spark读取文件时,需要先通过内存传输到hados_race,再由hados_race将数据卸载到硬件进行计算,数据经由内存及总线大量传输拷贝,极大地增加了时间消耗。同时,现有spark读取文件只能串行读取,无法做到并行化读取;由于spark是行读,hados_race是列式计算,由spark读取的数据传输到hados_race时还需要进行行列转换,增加额外的时间消耗。
技术实现思路
1、鉴于此,本专利技术实施例提供了一种基于数据处理单元读取列式存储文件的加速方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决现有加速方案由于文件数据需经由内存及总线大量传输拷贝,导致大量时间消耗、spark无法并行读取文件数据、以及在文件数据处理中行列形式转换导致额外时间消耗的问题。
2、一方面,本专利技术提供了一种基于数据处理单元读取列式存储文件的加速方法,所述方法包括以下步骤:
3、基于spark层读取列式存储文件的文件信息,并将所述文件信息传递至数据处理平台层;所述数据处理平台层根据所述文件信息读取相应的列式存储文件;所述文件信息至少包括文件路径和数据结构定义信息;
4、基于数据处理单元板卡并行读取所述列式存储文件,并进行计算,将计算结果发送至所述数据处理平台层;
5、所述数据处理平台层将所述列式存储文件的计算结果进行行列转换处理,并将处理后的计算结果进行输出与展示。
6、在本专利技术的一些实施例中,所述列式存储文件为parquet文件。
7、在本专利技术的一些实施例中,基于spark层读取列式存储文件的文件信息,还包括:
8、所述spark层使用预设的spark查询语言模块读取所述列式存储文件;
9、获取所述列式存储文件的头部信息,提取元数据信息;根据所述元数据信息解析得到所述文件路径和所述数据结构定义信息;所述数据结构定义信息至少包括数据的字段、字段类型、字段顺序。
10、在本专利技术的一些实施例中,将所述文件信息传递至数据处理平台层,还包括:
11、所述spark层将所述列式存储文件的文件信息通过java本地接口传递至所述数据处理平台层。
12、在本专利技术的一些实施例中,基于数据处理单元板卡并行读取所述列式存储文件,并进行计算,将计算结果发送至所述数据处理平台层,还包括:
13、在所述数据处理单元板卡上预先设置应用程序;
14、在所述应用程序中使用多线程或并行任务并行读取多个列式存储文件;
15、根据预设计算逻辑,在所述数据处理单元板卡上执行相应的计算操作,生成所述计算结果;并将所述计算结果发送至所述数据处理平台层。
16、在本专利技术的一些实施例中,所述数据处理平台层将所述列式存储文件的计算结果进行行列转换处理,还包括:
17、采用预设函数将所述计算结果进行列转行处理,得到行式数据。
18、另一方面,本专利技术提供一种基于数据处理单元读取列式存储文件的加速装置,所述装置包括:
19、spark层,所述spark层用于读取列式存储文件的文件信息,并将所述文件信息传递至数据处理平台层;
20、数据处理单元,所述数据处理单元用于并行读取所述列式存储文件,并进行计算,将计算结果发送至所述数据处理平台层;
21、数据处理平台层,所述数据处理平台层用于接收所述列式存储文件的文件信息和所述计算结果,并对所述计算结果进行行列转换处理,得到行式数据;将所述行式数据进行输出与展示。
22、在本专利技术的一些实施例中,通过在所述数据处理单元和所述数据处理平台层之间设置网络传输协议,以传输所述计算结果。
23、在本专利技术的一些实施例中,通过在所述spark层和所述数据处理平台层之间建立java本地接口,以调用彼此函数和传输所述列式存储文件的文件信息。
24、另一方面,本专利技术还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中提及的任意一项所述基于数据处理单元读取列式存储文件的加速方法的步骤。
25、本专利技术的有益效果至少是:
26、本专利技术提供一种基于数据处理单元读取列式存储文件的加速方法及装置,包括:基于spark层读取列式存储文件的文件信息,并将文件信息传递至数据处理平台层;数据处理平台层根据文件信息读取相应的列式存储文件;基于数据处理单元板卡并行读取列式存储文件,并进行计算,将计算结果发送至数据处理平台层;数据处理平台层将列式存储文件的计算结果进行行列转换处理,并将处理后的计算结果进行输出与展示。本专利技术提供的加速方法对于列式存储文件的读取,由数据处理单元直接并行读取并计算,避免数据的大量拷贝;进一步的,由数据处理单元直接读取列式存储文件无需再进行行列形式转换,极大地减少时间消耗,提升整体方案性能;进一步的,通过减少数据传输,从而节约主机处理器、内存、网络传输资源,提高系统吞吐量和性能。
27、本专利技术的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通本文档来自技高网...
【技术保护点】
1.一种基于数据处理单元读取列式存储文件的加速方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,所述列式存储文件为Parquet文件。
3.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,基于Spark层读取列式存储文件的文件信息,还包括:
4.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,将所述文件信息传递至数据处理平台层,还包括:
5.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,基于数据处理单元板卡并行读取所述列式存储文件,并进行计算,将计算结果发送至所述数据处理平台层,还包括:
6.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,所述数据处理平台层将所述列式存储文件的计算结果进行行列转换处理,还包括:
7.一种基于数据处理单元读取列式存储文件的加速装置,其特征在于,所述装置包括:
8.根据权利要求7所述的
9.根据权利要求7所述的基于数据处理单元读取列式存储文件的加速装置,其特征在于,通过在所述Spark层和所述数据处理平台层之间建立Java本地接口,以调用彼此函数和传输所述列式存储文件的文件信息。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一项所述基于数据处理单元读取列式存储文件的加速方法的步骤。
...【技术特征摘要】
1.一种基于数据处理单元读取列式存储文件的加速方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,所述列式存储文件为parquet文件。
3.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,基于spark层读取列式存储文件的文件信息,还包括:
4.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,将所述文件信息传递至数据处理平台层,还包括:
5.根据权利要求1所述的基于数据处理单元读取列式存储文件的加速方法,其特征在于,基于数据处理单元板卡并行读取所述列式存储文件,并进行计算,将计算结果发送至所述数据处理平台层,还包括:
6.根据权利要求1所述的基于数据处理单元读取列式存...
【专利技术属性】
技术研发人员:韩磊,才华,
申请(专利权)人:中科驭数北京科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。