一种飞行器海量传感器试验数据的快速处理方法转让专利

申请号 : CN201711339536.6

文献号 : CN108132986B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高健杨浩房红征汪家全罗凯王晓栋杜方洲余家豪

申请人 : 北京航天测控技术有限公司

摘要 :

本发明公开了一种飞行器海量传感器试验数据的快速处理方法,所述方法包括:步骤1)采集飞行器传感器下传的原始并行数据,对并行数据进行切割,生成若干个原始数据包,上传至HDFS文件;步骤2)对原始数据包进行数据解析,得到时间对齐后的标准化数据;步骤3)将时间对齐后的标准化数据进行导出,生成列式数据,将每一列的数据分配到spark集群的每个计算机中进行分布式计算。本发明的方法可以尽可能减少分布式计算集群之间的数据通信,所有线程能够在互不干扰的情况下共享相同的资源,进而显著提高数据处理的速度;此外,本发明的方法能够提高飞行器试验数据处理的效率,缩短两次试验的时间间隔。

权利要求 :

1.一种飞行器海量传感器试验数据的快速处理方法,所述方法包括:步骤1)采集飞行器传感器下传的原始并行HDFS数据,对并行数据进行切割,生成若干个原始数据包,上传至HDFS;

步骤2)对原始数据包进行数据解析,得到时间对齐后的标准化数据;

步骤3)将时间对齐后的标准化数据进行导出,生成列式数据,将每一列的数据分配到spark集群的每个计算机中进行分布式计算;

所述步骤1)包括:

步骤101)采集器根据规定的采样间隔对飞行器传感器下传的数据进行采集,解析整个数据文件的前段数据,获取所有的参数初始信息,包括参数的采样初始时间,整个数据文件采样的初始时间、以及数据文件中出现的参数名全集;

步骤102)计算单包的长度,用指针偏移的方法来对数据进行切包处理,生成若干个原始数据包;切包的规则是只能在两个单包之间切割,而不能跨包切割;

步骤103)将若干个原始数据包上传至HDFS中;

所述步骤2)包括:

步骤201)按照解析协议对原始数据包进行解析,获取基本参数值数据;

所述参数值数据包括参数的类型,长度,位置,偏移量,EU变换规则和参数组信息;

步骤202)对参数进行合成,生成全参数数值数据;

步骤203)根据全参数数值数据生成数据时间序列,得到时间序列信息;同时生成标准化索引数据;

步骤204)将时间序列信息与标准化索引数据进行数据合并,生成标准化带时间信息的序列数据;

步骤205)对数据进行时间对齐,生成时间对齐后的标准化数据;

获取采集数据的起始时间T,从数据协议中获取该参数的实际采样率Sa和对齐采样率Sa0,以及从分布式实时解析中获取到该参数的当前时间T1,计算当前参数实际的采样索引index=round((T1-T)*Sa*10-9),根据同步采样率原理计算当次参数值经过时间对齐后的采样索引:其中,lcm()表示求取最小公倍数,并获取到时间对齐后的当次参数的采样时间:time[]={t|t=T+indexNew[]*109/Sa0}(ns)。

2.根据权利要求1所述的飞行器海量传感器试验数据的快速处理方法,其特征在于,所述方法还包括:步骤4)将时间对齐后的标准化数据进行清洗,得到筛选后的数据,进行排序和合并后,存储在FTP服务器中。

3.根据权利要求1所述的飞行器海量传感器试验数据的快速处理方法,其特征在于,所述步骤3)的将时间对齐后的标准化数据进行导出,生成列式数据的具体过程为:通过对每个参数特定时间点的值以<参数组映射+时间对齐后的采样索引,value>的格式进行聚合、排序、归一化和过滤,每个参数组都各自导出一个只有参数值信息的中间文件到HDFS中,先不包含任何时间和参数名信息,然后对每个参数组中间文件进行并发的二次处理,根据参数组相关的时间区间、采样率和参数名集合虚拟生成出对齐后的时间序列以及参数名序列,由此生成列式数据。

4.根据权利要求2所述的飞行器海量传感器试验数据的快速处理方法,其特征在于,所述步骤4)具体包括:步骤401)通过a条件和b条件对数据进行清洗:a条件、参数组配置文件中要求导出该参数,b条件、该参数经过同步采样率后当前时间点没有因为采样率升降采导致值丢弃;

步骤402)对清洗后的数据进行排序和合并后,存储在FTP服务器中。

说明书 :

一种飞行器海量传感器试验数据的快速处理方法

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种飞行器海量传感器试验数据的快速处理方法。

背景技术

[0002] 飞行器从零部件集成到正式运行期间需要经过大量的试验来确保设备的正常稳定运行,随着国防工作的快速发展,飞行器的集成度越来越高,机载传感器的数量明显增多,这就导致了试验数据中参数的种类和数据量大增。以典型的民用飞机单次试验为例,目前涉及到的参数种类可达数万个,产生的数据大约150GB,数据处理规模已经十分庞大。
[0003] 目前对针对机载传感器下传的数据,现有的数据处理方法根据不同的场景主要有两种:针对少量源码数据,通过配置高性能的机器,在单台机器中对源码数据进行解析,该方法可以满足大部分小型试验任务的需求。而针对大规模源码数据,目前一般都是工程师对任务进行分工,每个人负责任务的一部分,在各自的机器上运行,最后将结果进行汇总,这种方法会增加人力的投入,也会增加解析的复杂度,进而导致解析效率降低,而随着数据量的逐渐增大,这种效率的降低也会越来越明显。

发明内容

[0004] 本发明的目的在于克服传统数据处理方法在处理海量传感器试验数据时存在的效率低,单个机器内存和CPU等硬件资源不足的缺点,提供一种快速的飞行器海量试验数据处理方法,用于提高试验数据分析的效率。
[0005] 为了实现上述目的,本发明提供一种飞行器的海量试验数据的快速处理方法,所述方法包括:
[0006] 步骤1)采集飞行器传感器下传的原始并行数据,对并行数据进行切割,生成若干个原始数据包,上传至HDFS文件;
[0007] 步骤2)对原始数据包进行数据解析,得到时间对齐后的标准化数据;
[0008] 步骤3)将时间对齐后的标准化数据进行导出,生成列式数据,将每一列的数据分配到spark集群的每个计算机中进行分布式计算。
[0009] 作为上述方法的一种改进,所述方法还包括:步骤4)将时间对齐后的标准化数据进行清洗,得到筛选后的数据,进行排序和合并后,存储在FTP服务器中。
[0010] 作为上述方法的一种改进,所述步骤1)包括:
[0011] 步骤101)采集器根据规定的采样间隔对飞行器传感器下传的数据进行采集,解析整个数据文件的前段数据,获取所有的参数初始信息,包括参数的采样初始时间,整个数据文件采样的初始时间、以及数据文件中出现的参数名全集;
[0012] 步骤102)计算单包的长度,用指针偏移的方法来对数据进行切包处理,生成若干个原始数据包;切包的规则是只能在两个单包之间切割,而不能跨包切割;
[0013] 步骤103)将若干个原始数据包上传至HDFS文件中。
[0014] 作为上述方法的一种改进,所述步骤2)包括:
[0015] 步骤201)按照解析协议对原始数据包进行解析,获取基本参数值数据;
[0016] 所述参数值数据包括参数的类型,长度,位置,偏移量,EU变换规则和参数组信息;
[0017] 步骤202)对参数进行合成,生成全参数数值数据;
[0018] 步骤203)根据全参数数值数据生成数据时间序列,得到时间序列信息;同时生成标准化索引数据;
[0019] 步骤204)将时间序列信息与标准化索引数据进行数据合并,生成标准化带时间信息的序列数据;
[0020] 步骤205)对数据进行时间对齐,生成时间对齐后的标准化数据;
[0021] 获取采集数据的起始时间T,从数据协议中获取该参数的实际采样率Sa和对齐采样率Sa0,以及从分布式实时解析中获取到该参数的当前时间T1,计算当前参数实际的采样-9索引index=round((T1-T)*Sa*10 ),根据同步采样率原理计算当次参数值经过时间对齐后的采样索引:
[0022]
[0023] 其中,lcm()表示求取最小公倍数,并获取到时间对齐后的当次参数的采样时间:
[0024] time[]={t|t=T+indexNew[]*109/Sa0}(ns)。
[0025] 作为上述方法的一种改进,所述步骤3)的将时间对齐后的标准化数据进行导出,生成列式数据的具体过程为:
[0026] 通过对每个参数特定时间点的值以<参数组映射+时间对齐后的采样索引,value>的格式进行聚合、排序、归一化和过滤,每个参数组都各自导出一个只有参数值信息的中间文件到HDFS中,先不包含任何时间和参数名信息,然后对每个参数组中间文件进行并发的二次处理,根据参数组相关的时间区间、采样率和参数名集合虚拟生成出对齐后的时间序列以及参数名序列,由此生成列式数据。
[0027] 作为上述方法的一种改进,所述步骤4)具体包括:
[0028] 步骤401)通过a条件和b条件对数据进行清洗:a、参数组配置文件中要求导出该参数;b、该参数经过同步采样率后当前时间点没有因为采样率升降采导致值丢弃;
[0029] 步骤402)对清洗后的数据进行排序和合并后,存储在FTP服务器。
[0030] 本发明的优势在于:
[0031] 1、本发明的方法可以尽可能减少分布式计算集群之间的数据通信,所有线程能够在互不干扰的情况下共享相同的资源,进而显著提高数据处理的速度;
[0032] 2、本发明通过反馈式的方法从数据文件中获取数据全局信息,进而能够直接跳过数据文件中不需要解析的部分,减少数据处理的计算量;
[0033] 3、本发明的方法能够发挥分布式计算和单线程计算的双重优势,大量密集的cpu运算依靠分布式的计算力,将需要shuffle和聚合等全局的操作转化为单线程的运算,提高了硬件资源的利用率;
[0034] 4、本发明的方法针对通用的数据文件格式,包括但不仅限于429协议、664协议、232协议、iNet协议、NPD协议等,可以将该方法扩展到复杂装备试验数据分析领域,具有广泛的使用价值;
[0035] 5、本发明的方法能够提高飞行器试验数据处理的效率,缩短两次试验的时间间隔。

附图说明

[0036] 图1是本发明的面向飞行器的海量试验数据的快速处理方法的流程图;
[0037] 图2是本发明的参数组快速导出数值计算与时间序列生成分割计算流程图;
[0038] 图3是本发明的参数基于分布式的同步采样率方法实现程序流程图。

具体实施方式

[0039] 为了保证方法的适用性,本发明提供了方法实现的总体结构图,一下结合附图及实施实例,对本方法进一步详细说明。
[0040] 下面以iNet格式协议的数据文件为对象介绍具体的实施方式。
[0041] 实施对象描述:iNet格式是工作数据采集中典型的数据格式,其结构主要由mac包头、ip包头、UDP包头、iNet包头、数据源码组成,在ip包头中可以读取到单个包的长度,数据发送源地址,数据接收源地址等,在iNet包头中能够读取到streamID(表示采集器当次采集数据的通道编号,用于确定当前采集到哪些参数以及参数的位置),当前包时间秒和纳秒。在对单包进行解析过程中,首先根据streamID获取当前包的数据采集通道,每一个streamID都有一个规定的数据协议,这个协议直接决定了如何对源码文件进行解析。根据数据协议可以获知该包涉及到的参数以及位置,进而将数据源码转化为工程值导出。
[0042] 如图1所示,本实例主要由以下步骤顺序执行:
[0043] 步骤1)采集飞行器传感器下传的原始数据,对并行数据进行切割,生成若干个原始数据包,上传到HDFS文件;具体包括:
[0044] 步骤101)采集器根据规定的采样间隔对机载数据进行采集,所以整个数据文件不同包之间除了时间相关的信息递增之外,涉及到的参数值格式并没有发生改变,利用该特性,先根据实际情况解析整个数据文件前段数据,直到获取所有需要的参数初始信息为止,包括参数的采样初始时间,整个数据文件采样的初始时间、以及数据文件中出现的参数名全集等,在之后的分布式运算中,单个时间点的参数值和采样索引计算都可以根据这些共享资源以及当前的包信息,通过自身计算迭代求得,而不需要从其他线程中获取信息,避免了线程之间的通信。同时,事先确定数据文件中存在的参数集合,也可以预先剔除参数组中不存在于当前数据文件中的参数群,只提取存在于数据文件中的参数属性,能够有效的跳过不必要的解析过程,同时减少广播变量占用的内容,为集群内存计算节省空间,显著提高解析的效率。
[0045] 步骤102)对海量数据文件进行分布式计算之前,需要将海量数据进行切包处理,切包的规则是只能在两个单包之间切,而不能跨包,否则会丢失数据,可以通过不断计算单包的长度来用指针偏移的方法来切包;
[0046] 如果数据文件大小约70GB,通过评估集群的计算力将数据按照时间顺序分为单位为1GB的小数据包,同时,按照上述提出的数据快速解析方法,数据头需要先切出10MB(可以有弹性的设置大小,原则上必须要至少覆盖一个采样周期的数据)。
[0047] 步骤103)切出来的数据上传到HDFS(Hadoop分布式文件系统)中,准备进入分布式计算。
[0048] 步骤2)对数据包进行数据解析,得到时间对齐后的标准化数据;具体包括:
[0049] 步骤201)按照解析协议对分布式数据进行解析,获取基本参数值数据;
[0050] iNet数据解析协议以xml、Excel两种格式规定,首先通过对这些协议文件的解析获取所有参数信息,包括参数的类型,长度,位置,偏移量,EU变换规则,参数组信息等;
[0051] 步骤202)对参数进行合成,生成全参数数值数据;
[0052] 步骤203)根据全参数数值数据生成数据时间序列,得到时间序列信息;同时生成标准化索引数据;
[0053] 步骤204)将时间序列信息与标准化索引数据进行数据合并,生成标准化带时间信息的序列数据;
[0054] 步骤205)对数据进行时间对齐,生成时间对齐后的标准化数据;
[0055] 获取采集数据的起始时间T(ns),从数据协议中获取该参数的实际采样率Sa(次/秒)和对齐采样率Sa0(次/秒),以及从分布式实时解析中获取到该参数的当前时间T1(秒),计算当前参数实际的采样索引index=round((T1-T)*Sa*10-9),根据同步采样率原理计算可得到当次参数值经过时间对齐后的采样索引
[0056]
[0057] (其中lcm表示最小公倍数),并获取到时间对齐后的当次参数的采样时间[0058] time[]={t|t=T+indexNew[]*109/Sa0}(ns)。
[0059] 从实现原理上看,该方法自始至终都只利用了所述的快速处理方法得到的共享资源,以及当前线程解析到的参数属性,而没有使用其他线程的任何解析结果,如此集群只需要充分利用cpu的运算力,进而在不进行线程通信的前提下完成分布式计算环境下参数的采样率时间对齐,消除了集群允许期间由于互相通信导致的等待和同步时间。
[0060] 步骤3)将时间对齐后的标准化数据进行导出,生成列式数据,将每一列的数据分配到spark集群的每个计算机中进行分布式计算;具体包括:
[0061] 针对每个参数组都会产生一个中间结果,因为集群不适合将虚拟的时间列和参数行通过union算子整合到整个数据群中,所以本方法将添加时间列和参数行与参数值运算分割开,以实现数据的快速解析工作。从中间结果转变为最终结果的具体算法流程见图2。如此就通过本方法实现了海量数据的快速处理。
[0062] 根据上述的数据快速处理方法和采样率时间对齐方法求出每个要导出的参数对应的参数值和采样索引,然后通过聚合操作获取每个参数组每个时间点的参数的所有值,经过字符串操作后拼成一行数据即为某一时间对齐下的参数值集合,最后经过过滤导出每个参数组对应只有参数值信息的中间文件到HDFS中,这个中间文件并不包含任何时间对齐的信息和参数名信息。然后再对每个文件单独各开启一个并发进程对文件进行二次处理,根据参数组相关的时间区间、采样率和参数名集合等虚拟生成出对齐后的时间序列以及参数名序列,最终得到参数组的最终结果。
[0063] 在集群中,先通过对每个参数特定时间点的值以<参数组映射+时间对齐后的采样索引,value>的形式进行聚合、排序、归一化、过滤,每个参数组都各自导出一个只有参数值信息的中间文件到HDFS中,先不包含任何时间和参数名信息,然后再对每个参数组中间文件再进行并发的二次处理,根据参数组相关的时间区间、采样率和参数名集合等虚拟生成出对齐后的时间序列以及参数名序列,最终得到参数组的最终结果,这种将参数值和参数时间分开计算的方式,能够避免值与时间的union操作,减少了大量的shuffle运算,保证集群多线程计算互不干扰,尽可能高效的利用集群的计算力。
[0064] 步骤4)将时间对齐后的标准化数据进行清洗,得到筛选后的数据,进行排序和合并后,存储在FTP服务器中;具体包括:
[0065] 步骤401)对数据进行清洗;
[0066] 在分布式计算中,海量试验数据的分布式快速解析方法通过a条件和b条件对数据进行清洗。以下几种情况均满足,才会将当前时间点的某个参数的值导出到参数组文件中。a、参数组配置文件中要求导出该参数;b、该参数经过同步采样率后当前时间点没有因为采样率升降采导致值丢弃;
[0067] 具体方法如下:针对a:通过对10MB数据小包的解析,确认要导出的参数是否都存在,把不存在的剔除掉,然后只从数据协议中获取这些参数的属性,在解析数据包时,如果当前偏移量对应的信息在已解析的数据协议中找不到,则直接跳过,避免解析无用数据浪费时间。针对b条件,采用的是上述提到的分布式参数采样率时间对齐方法,确认当前计算的参数值是否需要导出,具体算法流程见图3。
[0068] 经过筛选后,计算到的每个结果都是需要导出的,最终需要确定每个参数值在参数组结果中的位置信息。在根据b条件进行筛选数据的过程中,可以确定当前参数值对应的采样索引集合,然后从参数组属性中获取当前参数名对应的参数组,即可提取出一个key-value格式的数据,形如<参数组名称+采样索引,参数值>,如何每个要导出的参数值都能有一个key表示属于哪一个参数组,处于参数组文件的第几行,通过对所有数据进行groupbykey操作,即可得到只包含参数值的中间结果。
[0069] 本方法能够避免全局搜索操作,最大化的提高集群运算的效率,可以通过一下措施来实现该方法。
[0070] 步骤402)到筛选后的数据,进行排序和合并后,存储在FTP服务器中;
[0071] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。