一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种检测HDFS小文件和数据倾斜的自动化测试方法及工具与流程

2022-03-14 01:13:47 来源:中国专利 TAG:

技术特征:
1.一种检测hdfs小文件和数据倾斜的自动化测试方法,其可支持的测试内容包含校验hdfs文件系统中是否存在小文件,以及校验hdfs文件系统中是否存在文件数据倾斜,其特征在于可支持的测试内容的具体实现方式:步骤1:在pg库中创建用例层及结果层,分别对应schema_case和schema_report,以及创建对应的测试用例表case_table和用例结果表report_table;步骤2:在用例层配置测试用例数据,按测试需求配置测试用例数据,内容包含:项目名称、提测版本、测试层名、测试表名、测试类型、是否检测到分区粒度、数据切斜倍率、期望单文件占系统文件块比例、用例状态、用例创建用户、用例创建时间、用例更新用户、用例更新时间和备注;步骤3:读取用例表中的测试用例数据,并构造用于查询文件存储情况的hdfs命令,以及调用shell测试脚本;步骤4:根据测试用例数据id,循环执行每一条测试用例数据所构造的hdfsm命令和shell脚本,通过hdfs命令读取系统路径下的被测表,得到被测表的测试结果;步骤5:在关键步骤打印日志,以便排查使用者排查问题;步骤6:将步骤4获取的实际测试的测试结果与预先设定的预期结果进行比较,得出最终测试结果,使用is_pass字段标识测试用例数据是否通过;步骤7:存储最终测试结果:将最终测试结果存储在用例结果表中:is_pass为1表示测试通过,对应的conclusion为正常;is_pass为0表示测试未通过,对应的conclusion可能为文件数量超额、数据倾斜或数据倾斜和文件数量超额同时存在;步骤8:测试人员访问最终测试结果表查看测试结果。2.根据权利要求1所述的一种检测hdfs小文件和数据倾斜的自动化测试方法,其特征在于步骤1所述的测试用例表和用例结果表的设计具体如下:测试用例表字段包含:用例id、项目名称、提测版本、测试层名、测试表名、测试类型、是否检测到分区粒度、数据切斜倍率、期望单文件占系统文件块比例、用例状态、用例创建时间、用例创建时间、用例更新用户、用例更新时间和备注;用例结果表字段包含:用例id、项目名称、测试版本号、测试表名、是否测试通过、测试结论说明、实际数据倾斜率、存在小文件数量、总文件大小、总文件数、最大文件大小、平均文件大小和创建时间等字段;其中用例id为该用例结果表的外键,对应小文件和数据倾斜的测试用例表中的用例id字段。3.根据权利要求2所述的一种检测hdfs小文件和数据倾斜的自动化测试方法,其特征在于步骤3具体实现如下:3-1.构造用于查询文件存储情况的hdfs命令如下:#获取需要执行检测的hdfs路径;hdfsdicpath=$hdfspath/$shcemaname/$tablename#获取目录下包含子目录下的文件总数量;filetotalcount=$(hadoop fs-count$hdfsdicpath/|awk'{print$2}')#获取所有文件总大小(b)filetotalsize=$(hadoop fs-count$hdfsdicpath/|awk'{print$3}')
filetotalsizekb=$(echo"scale=2;${filetotalsize}/1024"|bc)#获取所有文件中最大的文件大小值(b)maxfilesize=$(hadoop fs-ls-r$hdfsdicpath/*|sort-nr-k 5|awk'{print$5}'|head-1)maxfilesizekb=$(echo"scale=2;${maxfilesize}/1024"|bc)#计算文件内存平均值(kb)avgfilesize=$(echo"scale=2;($filetotalsize/1024)/$filetotalcount"|bc)其中,shcemaname为用例数据中测试层名内容,tablename为用例数据中测试表名内容,hdfsdicpath为需要执行检测的hdfs路径,filetotalcount为测试路径下文件总数量,filetotalsizekb为获取所有文件总大小,单位为kb,maxfilesizekb为获取所有文件中最大的文件大小值,avgfilesize为文件内存平均值,awk是shell语言脚本自带的方法,用于匹配查询文件中的字符串,$()表示参数引用标志符,hadoop fs是hdfs的文件查询命令,echo是shell语言脚本的字符串打印输出命令,与print类似;scale表示计算后数值保留的精确位;3-2.判断是否存在小文件逻辑具体实现如下:以用例数据中测试表tablename为单位,满足当该表文件使用的总大小在0m~50m之间,且文件数量k>10;或者当该表文件使用的总大小>50m,且(总文件大小s/(文件系统块大小s1*期望单文件占系统文件块比例系数a1) 1)<当前文件数量k,即:(s/(s1*a1) 1)<k,则认为文件数不满足预期,存在小文件;3-3.数据倾斜的判断逻辑实现如下:以用例数据中测试表tablename为单位,表中最大文件值与所有文件大小的均值的比值大于数据倾斜倍率,则认为出现数据倾斜;3-4.测试用例数据通过的条件如下:当小文件判断标志sfc_flag=0并且数据倾斜判断标志tilt_flag=0,则测试通过,其他均为测试不通过。4.根据权利要求3所述的一种检测hdfs小文件和数据倾斜的自动化测试方法,其特征在于步骤5具体关键步骤包括:

执行时输入的参数校验;

获取测试用例数据生成用例dataframe,将用例数据作为入参传入shell脚本中待执行;

循环执行所有用例,得到被测数据的真实存储空间占用值;

解析返回的测试结果数据,提取需要的数据作为后续的测试结果存入dataframe;

执行完成提示,失败或成功。5.根据权利要求1或4所述的一种检测hdfs小文件和数据倾斜的自动化测试方法,其特征在于所述的自动化测试工具的技术架构具体如下:工具技术架构分为5大模块:读取测试用例内容模块、解析用例中配置参数模块、循环调用执行shell判断脚本模块、结果对比模块、结果存储模块;所述的读取测试用例内容模块:将测试用例表中已配置的测试用例内容读取到
dataframe中;所述的解析用例中配置参数模块:通过读取测试用例内容模块得到的数据,按照测试所需的参数,将用例表中配置的字段处理为循环执行shell判断脚本模块的输入参数;所述的循环执行shell判断脚本模块:根据用例id,从解析用例中配置参数模块中解析出所需参数后,循环调用shell脚本执行测试代码;所述的结果对比模块,将循环执行shell判断脚本模块中得到真实文件存储数据,以及经过逻辑判断后的小文件和数据倾斜的状态值,若小文件和数据倾斜状态值同时满足预期状态值等于
‘1’
,则测试通过;若两者不能同时满足预期状态值不等于
‘1’
则测试不通过;所述的结果存储模块,将结果对比模块得到的测试结果数据、用例id、真实存储空间占用数据等信息,存储到pg数据库的测试结果表中。6.根据权利要求5所述的一种检测hdfs小文件和数据倾斜的自动化测试方法,其特征在于所述自动化测试工具的执行方法及日志存储:执行方式:通过spark-submit命令直接调用执行用例;日志存储:执行结束后日志存储在log目录中,包含loginfo.log和report.log两份日志文件,其中loginfo中存储的是执行过程日志,report.log中存储的是各测试表的数据文件存储情况的简略版说明,用户均可自行查看,可以初步了解到被检测的表数量、对应表的小文件和数据倾斜率的指标值的执行信息。

技术总结
本发明公开了一种检测HDFS小文件和数据倾斜的自动化测试方法及工具。本发明具体包括以下步骤:(1)首先,在PostgreSQL数据库创建用例表及测试结果表,用于后续存储测试用例和测试结果;(2)根据数据测试需求,在数据库表中配置测试用例;(3)读取并解析用例表中的测试用例数据;(4)执行代码类调用Shell脚本;(5)获取Shell脚本返回的结果,对比测试结果与期望结果的一致性;(6)将测试结果写表存储。本方法及工具亦可保存历史已配置好的用例,进行自动化回归测试,以及可运用在基于相同产品架构下的不同定制项目中,本数据测试方法及工具可极大提升测试工作效率。提升测试工作效率。提升测试工作效率。


技术研发人员:陈灿 王一君 邱林 王光华
受保护的技术使用者:杭州览众数据科技有限公司
技术研发日:2021.09.24
技术公布日:2022/3/11
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献