鄧國寶,查曉文,劉 濤,馮 燦,薛博文
(中國商飛試飛中心 測試工程部,上海 200120)
試飛數(shù)據(jù)主要包括飛行試驗采集的時序數(shù)據(jù)和業(yè)務(wù)流程生成的試飛任務(wù)信息數(shù)據(jù)。飛行試驗采集的時序數(shù)據(jù)具有參數(shù)量多、數(shù)據(jù)體量、數(shù)據(jù)種類多樣化、數(shù)據(jù)隨機性變化、數(shù)據(jù)多地產(chǎn)生、數(shù)據(jù)時效性需求高及數(shù)據(jù)價值大等特征。國產(chǎn)民機在試飛試驗階段,累積了大量的試飛數(shù)據(jù),規(guī)模達到了PB級[1-2]。
早期國內(nèi)外試飛數(shù)據(jù)主要采用文本形式存儲,數(shù)據(jù)快速應(yīng)用存在較大困難,數(shù)據(jù)有效關(guān)聯(lián)受到很大限制,造成統(tǒng)文本文件的數(shù)據(jù)管理模式難以滿足日益增長的數(shù)據(jù)存儲與高效應(yīng)用需求[3]。波音、空客等國外主制造商采用信息化技術(shù),建立了AnalytX、Skywise等數(shù)據(jù)管理平臺,改進數(shù)據(jù)存儲方式,研制了數(shù)據(jù)查詢工具,提升數(shù)據(jù)應(yīng)用效率[4-5]。
試飛數(shù)據(jù)查詢引擎融合新一代信息技術(shù),設(shè)計新型數(shù)據(jù)存儲格式、創(chuàng)新試飛數(shù)據(jù)關(guān)聯(lián)方式、提升試飛數(shù)據(jù)查詢能力,提供更高效的試飛任務(wù)信息數(shù)據(jù)與飛行試驗數(shù)據(jù)融合應(yīng)用服務(wù),解決多源異構(gòu)試飛數(shù)據(jù)復(fù)雜管理與試飛數(shù)據(jù)用戶快速高效應(yīng)用的難題[6-8]。
如圖1所示,試飛數(shù)據(jù)查詢引擎是試飛數(shù)據(jù)平臺數(shù)據(jù)交互中樞系統(tǒng),快速獲取平臺多類數(shù)據(jù)組件數(shù)據(jù),開展數(shù)據(jù)加工處理后,向數(shù)據(jù)應(yīng)用提供服務(wù)。試飛數(shù)據(jù)平臺采用三層架構(gòu),具有數(shù)據(jù)層、服務(wù)層和應(yīng)用層等功能,提供綜合數(shù)據(jù)管理與應(yīng)用服務(wù)[9]。試飛數(shù)據(jù)平臺采用分布式架構(gòu)搭建大數(shù)據(jù)集群和云計算集群,提供動態(tài)彈性的計算、存儲、網(wǎng)絡(luò)等基礎(chǔ)設(shè)施及服務(wù)(IaaS,infrastructure as a service),以及數(shù)據(jù)庫、計算引擎、容器等平臺及服務(wù)(PaaS,platform as a service),研制基于瀏覽器/服務(wù)器模式(B/S,browser/server)的試飛數(shù)據(jù)分析應(yīng)用軟件,提供試飛數(shù)據(jù)分析應(yīng)用及服務(wù)(SaaS,software as a service),形成試飛數(shù)據(jù)平臺三層架構(gòu)技術(shù)支撐[10]。
圖1 試飛數(shù)據(jù)查詢引擎系統(tǒng)結(jié)構(gòu)
試飛數(shù)據(jù)查詢引擎基于大數(shù)據(jù)交互查詢presto組件,設(shè)計數(shù)據(jù)集成、數(shù)據(jù)查詢、數(shù)據(jù)處理等功能。Presto 是一個用于分析的ANSI SQL查詢引擎,支持計算和存儲的分離,并基于內(nèi)存計算,減少磁盤IO消耗。Presto可以適配多種不同的數(shù)據(jù)源,具備多個數(shù)據(jù)源連接和交互功能,擁有跨數(shù)據(jù)源和內(nèi)存計算的優(yōu)勢,實現(xiàn)多個數(shù)據(jù)源之間的聯(lián)表查詢[11-14]。
數(shù)據(jù)集成根據(jù)具備Presto 跨數(shù)據(jù)源連接功能,形成訂閱多類數(shù)據(jù)庫數(shù)據(jù)能力,獲取存儲在MySQL、Hive、數(shù)據(jù)倉庫里的結(jié)構(gòu)化數(shù)據(jù),以及獲取對象存儲、ES、Redis等組件內(nèi)的數(shù)據(jù),并開展數(shù)據(jù)表關(guān)聯(lián)與融合[15]。
數(shù)據(jù)查詢根據(jù)試飛業(yè)務(wù)需求粒度,基于試飛數(shù)據(jù)各類形態(tài),設(shè)計精細度逐次變化的查詢模式。數(shù)據(jù)查詢模式包括概覽查詢、高保真查詢、特征查詢、精細查詢,滿足不同數(shù)據(jù)應(yīng)用場景需求。概覽查詢實現(xiàn)任務(wù)總覽功能,試飛數(shù)據(jù)查詢引擎直接獲取存儲到數(shù)據(jù)倉庫應(yīng)用數(shù)據(jù)層數(shù)據(jù),傳輸?shù)綌?shù)據(jù)應(yīng)用軟件中進行快速預(yù)覽。高保真查詢實現(xiàn)一定狀態(tài)下的數(shù)據(jù)預(yù)覽功能,訪問hive數(shù)據(jù)庫中的數(shù)據(jù),經(jīng)過用戶自定義函數(shù)(UDF,user-defined function)聚合處理。特征查詢實現(xiàn)試飛業(yè)務(wù)特定條件查詢,根據(jù)預(yù)設(shè)試飛參數(shù)和規(guī)則條件,以及基于試飛有任務(wù)特征的數(shù)據(jù)查詢,提取特征屬性,轉(zhuǎn)化為規(guī)則或條件,開展數(shù)據(jù)查詢。精細查詢實現(xiàn)試飛數(shù)據(jù)原子粒度精細查詢[16-17]。
數(shù)據(jù)計算主要采用采用UDF函數(shù)形式,編寫規(guī)則代碼,封裝為業(yè)務(wù)分析函數(shù),實現(xiàn)數(shù)據(jù)整合與加工。數(shù)據(jù)計算主要包括時間對齊計算、插值擬合計算、參數(shù)合并計算和數(shù)值通用計算等簡單計算,較為復(fù)雜計算采用向試飛數(shù)據(jù)平臺大數(shù)據(jù)計算引擎提交計算請求,獲取大數(shù)據(jù)引擎計算結(jié)果的方式。數(shù)據(jù)服務(wù)以統(tǒng)一應(yīng)用程序編程接口(API,application programming interface)形式響應(yīng)數(shù)據(jù)應(yīng)用軟件訂閱數(shù)據(jù)需求[18-20]。
試飛數(shù)據(jù)查詢引擎設(shè)計立足試飛數(shù)據(jù)平臺資源,采用存算分離技術(shù)和異構(gòu)計算技術(shù),研制數(shù)據(jù)調(diào)度和融合功能,實現(xiàn)試飛數(shù)據(jù)快速查詢與計算,其系統(tǒng)硬件設(shè)計如圖2所示。
圖2 硬件設(shè)計
存算分離技術(shù)是指存儲(云盤/對象存儲等)和計算(彈性伸縮)分離至彼此獨立的計算域和存儲域,并通過以太網(wǎng)或?qū)S么鎯W(wǎng)絡(luò)(例如光纖通道)將二者互連,實現(xiàn)了存儲資源的靈活擴展和高效共享。滿足云和互聯(lián)網(wǎng)存儲域服務(wù)兼顧資源利用率、可靠性、性能、效率等眾多訴求,充分利用理論上無限的IaaS層的資源來構(gòu)建,實現(xiàn)資源的池化和按需分配,實現(xiàn)更佳的彈性伸縮能力,從而提高資源的利用率更高的可用性和降低成本。隨著高速網(wǎng)絡(luò)技術(shù)和新硬件的發(fā)展,數(shù)據(jù)平臺主流方式將計算,內(nèi)存,和存儲資源分別以資源池的方式做解耦合,這些云上IaaS資源以池化形式供應(yīng)給用戶使用,并且通過高速網(wǎng)絡(luò)來進行鏈接。
試飛數(shù)據(jù)查詢引擎基于存算分離技術(shù),設(shè)計資源分配策略,根據(jù)查詢?nèi)蝿?wù)靈活申請租戶資源,確保查詢事務(wù)正確執(zhí)行,確保查詢事務(wù)高效執(zhí)行,確保系統(tǒng)高可用。試飛數(shù)據(jù)存儲于試飛數(shù)據(jù)平臺對象存儲組件,以及基于對象存儲的Hive等分布式數(shù)據(jù)庫,并采用備份機制。試飛數(shù)據(jù)查詢引擎獲取對象存儲的元數(shù)據(jù)信息,快速獲取所需數(shù)據(jù)塊并加載到內(nèi)存中。試飛數(shù)據(jù)查詢充分發(fā)揮分布式計算引擎優(yōu)勢,按需彈性拓展計算單元,分配計算任務(wù)至計算單元,在內(nèi)存中開展大規(guī)模并行計算,匯聚計算結(jié)果,統(tǒng)一輸出查詢數(shù)據(jù)。
試飛數(shù)據(jù)查詢引擎采用X86服務(wù)器和ARM服務(wù)器混合部署的異構(gòu)計算技術(shù),定制研發(fā)不同計算內(nèi)核功能模塊,屏蔽底層硬件差異帶來的計算性能影響,實現(xiàn)計算性能一致性。根據(jù)試飛數(shù)據(jù)計算場景,批處理任務(wù)采用X86服務(wù)器集群,基于X86的復(fù)雜指令集(CISC,complex instruction set computing)特征,完成復(fù)雜數(shù)據(jù)計算功能。流處理場景采用ARM服務(wù)器集群,基于精簡指令集(RISC,reduced instruction set computing)特征,完成通用計算,發(fā)揮其低功耗優(yōu)勢,降低常規(guī)計算維護成本。
如圖3所示,試飛數(shù)據(jù)查詢引擎采用大數(shù)據(jù)分布式交互查詢關(guān)鍵技術(shù),基于試飛數(shù)據(jù)處理與分析平臺多種功能數(shù)據(jù)存儲與計算組件,設(shè)計數(shù)據(jù)查詢接口,制定資源分配策略,開發(fā)試飛數(shù)據(jù)計算UDF函數(shù),分層加工處理與存儲數(shù)據(jù),具備多源數(shù)據(jù)匯聚,多維信息關(guān)聯(lián)查詢,多層數(shù)據(jù)靈活鉆取,多功能自定義函數(shù)集成,多類指標數(shù)據(jù)自適應(yīng)輸出等功能。
圖3 試飛數(shù)據(jù)查詢引擎軟件設(shè)計
試飛數(shù)據(jù)查詢引擎基于試飛數(shù)據(jù)平臺交互分析組件Presto研制數(shù)據(jù)查詢功能,采用ANSI SQL和Java等數(shù)據(jù)開發(fā)語言編寫數(shù)據(jù)查詢語句和數(shù)據(jù)計算自定義函數(shù)。
試飛數(shù)據(jù)查詢引擎根據(jù)Presto組件子功能模塊,細分為試飛數(shù)據(jù)查詢?yōu)?個過程,即為試飛數(shù)據(jù)查詢?nèi)肟谶^程、試飛數(shù)據(jù)查詢服務(wù)過程、試飛數(shù)據(jù)查詢與計算過程以及試飛數(shù)據(jù)源連接過程。
試飛數(shù)據(jù)查詢?nèi)肟诓捎肞resto的客戶端(Client)接收試飛數(shù)據(jù)應(yīng)用軟件發(fā)起的數(shù)據(jù)查詢請求,包括試飛業(yè)務(wù)結(jié)構(gòu)化數(shù)據(jù)、試飛試驗數(shù)據(jù)、試飛分析結(jié)果數(shù)據(jù)等數(shù)據(jù)類型。
試飛數(shù)據(jù)查詢服務(wù)采用Presto的coordinator接收查詢請求,解析查詢?nèi)蝿?wù),生成查詢計劃,優(yōu)化查詢策略、編排查詢?nèi)蝿?wù),獲取數(shù)據(jù)存儲元信息并開展解析,并提交給worker,執(zhí)行數(shù)據(jù)查詢。也接收work查詢數(shù)據(jù)結(jié)果,以數(shù)據(jù)服務(wù)形式反饋給客戶端。
試飛數(shù)據(jù)查詢與計算采用Presto的worker節(jié)點負責(zé)查詢處理和計算功能。按照分布式系統(tǒng)特點,配置多個worker執(zhí)行數(shù)據(jù)查詢?nèi)蝿?wù),當 Worker啟動時,會通過REST API通信方式廣播自己去發(fā)現(xiàn) Coordinator,并告知 Coordinator 它是可用,隨時可以接受 Task。根據(jù)試飛數(shù)據(jù)特征和業(yè)務(wù)邏輯,設(shè)計了試飛概覽查詢worker、試飛數(shù)據(jù)精細查詢worker、試飛數(shù)據(jù)高保真查詢worker、試飛數(shù)據(jù)特征查詢worker,以及試飛數(shù)據(jù)計算worker等多功能計算節(jié)點。各個worker節(jié)點間采用RestAPI形式實現(xiàn)數(shù)據(jù)通信,融合數(shù)據(jù)處理結(jié)果,生成結(jié)果數(shù)據(jù)集。
試飛數(shù)據(jù)源連接采用Presto的connector負責(zé) Presto 和試飛數(shù)據(jù)存儲組件中的數(shù)據(jù)源連接。Connector 將 Presto 適配到試飛數(shù)據(jù)源,驅(qū)動數(shù)據(jù)庫連接程序,如Hive或關(guān)系數(shù)據(jù)庫。 Presto 包含幾個內(nèi)置連接器:JMX 的連接器 ,它是一個提供對內(nèi)置系統(tǒng)表訪問的系統(tǒng)連接器;Hive連接器和一個用于提供 TPC-H 基準數(shù)據(jù)的TPCH連接器,以及根據(jù)試飛連接場景開發(fā)的對象存儲和數(shù)據(jù)倉庫連接器等第三方連接器,實現(xiàn)Presto 訪問各種試飛數(shù)據(jù)源中的數(shù)據(jù)。
試飛數(shù)據(jù)倉庫是試飛數(shù)據(jù)查詢引擎關(guān)鍵數(shù)據(jù)源,大多數(shù)試飛數(shù)據(jù)應(yīng)用都從試飛數(shù)據(jù)倉庫中進行數(shù)據(jù)獲取。試飛數(shù)據(jù)倉庫的貼源數(shù)據(jù)層(ODS,operation data store),基于Hive進行數(shù)據(jù)存儲,數(shù)據(jù)細節(jié)層(DWD,data warehouse details)存儲經(jīng)過一定規(guī)則處理后的事件數(shù)據(jù)集、數(shù)據(jù)服務(wù)層(DWS,data warehouse service)存儲經(jīng)過聚合處理后的統(tǒng)計信息或試飛任務(wù)執(zhí)行結(jié)果數(shù)據(jù)集。維表層(DIM,dimension)存儲試飛數(shù)據(jù)維度信息,包含試飛數(shù)據(jù)業(yè)務(wù)元數(shù)據(jù)、技術(shù)元數(shù)據(jù)等元數(shù)據(jù)信息,支持試飛數(shù)據(jù)查詢引擎快速解析查詢?nèi)蝿?wù)。
試飛數(shù)據(jù)查詢引擎核心查詢功能包括概覽查詢、高保真查詢、特征查詢、精細查詢,以及查詢后數(shù)據(jù)計算,設(shè)計了統(tǒng)一查詢功能接口和各類查詢實現(xiàn)流程。
3.2.1 概覽查詢
如圖4所示,概覽查詢查詢數(shù)倉的ODS層中存儲全部參數(shù)的按秒聚合數(shù)據(jù),每次查詢會一次查詢并加載該段時間的全部參數(shù)的數(shù)據(jù),對于采樣頻率小的參數(shù)或參數(shù)量不多,且在時間跨度不大的情況下,基于presto的查詢結(jié)果輸出和展示會很快。但對于高頻參數(shù)(采樣頻率大于512的參數(shù)),單秒的按秒聚合值包含的數(shù)據(jù)相對于低頻參數(shù)就會比較大,若參數(shù)量增多和時間范圍擴大,大數(shù)據(jù)量的情況下對網(wǎng)絡(luò)傳輸和集群查詢性能都會有較大的影響。
圖4 概覽查詢流程圖
基于對查詢性能的優(yōu)化,在數(shù)倉的DWD層中創(chuàng)建概覽表,用于存儲單秒內(nèi)的聚合值。對于核心參數(shù)(查詢使用頻率較高的參數(shù)),在概覽表中存儲一秒內(nèi)的最大值及對應(yīng)的時間(精確到秒);對于高頻參數(shù),在概覽表中存儲一秒內(nèi)的初始值、最大值、最小值、結(jié)束值,將4個值合并為一條數(shù)據(jù),并結(jié)合對應(yīng)的時間進行存儲。
概覽查詢先根據(jù)參數(shù)查詢數(shù)倉DIM層的概覽參數(shù)映射表,獲取到每個參數(shù)存儲的概覽表名和對應(yīng)的映射字段,然后查詢概覽表獲取概覽數(shù)據(jù)。概覽查詢主要用于多參數(shù)在長歷程時間段中的查詢,包括高頻參數(shù)和核心參數(shù)。通過概覽查詢獲取參數(shù)的整體變化趨勢,存儲的聚合值也可獲取該參數(shù)是否存在波峰或波谷的情況。
3.2.2 高保真查詢
如圖5所示,高保真查詢根據(jù)顯示器分辨率,選擇合適的數(shù)據(jù)點,表征數(shù)據(jù)特征。由于試飛數(shù)據(jù)采樣率都比較高,且試驗歷程都在數(shù)小時,在數(shù)據(jù)選段過程中需要逐步縮小數(shù)據(jù)范圍查看細節(jié)數(shù)據(jù),且隨著數(shù)據(jù)量增大,對網(wǎng)絡(luò)傳輸性能和瀏覽器的展示性能都會產(chǎn)生負面的影響?;诖诉M行考慮,從查詢服務(wù)獲取數(shù)據(jù)后,根據(jù)傳入的屏幕分辨率進行縮放數(shù)據(jù),將總的數(shù)據(jù)條數(shù)降頻為指定分辨率下的條數(shù)。
圖5 高保真數(shù)據(jù)查詢流程
比如對于1 080*1 920的分辨率下,水平方向含有像素數(shù)為1 920個。若返回數(shù)據(jù)集中每個參數(shù)對應(yīng)的數(shù)據(jù)條數(shù)小于1 920條,則可直接返回界面進行展示;若大于1 920條,則需要對每個參數(shù)的數(shù)據(jù)條數(shù)對齊到1 920條。對齊方式為1分別除以原始條數(shù)和分辨率對應(yīng)的水平像素數(shù),依次遍歷像素數(shù)對應(yīng)的單位間隔,獲取原始條數(shù)中該區(qū)間的最大值,直到遍歷結(jié)束。
按屏幕分辨率進行縮放后的數(shù)據(jù)可以減少大數(shù)據(jù)量對網(wǎng)絡(luò)帶寬和瀏覽器負載的影響,提高數(shù)據(jù)的返回效率,保證用戶在保持數(shù)據(jù)準確性的同時,提高查詢效率。
高保真查詢獲取DIM層的參數(shù)映射表保存所有架次的參數(shù)映射信息,DIM層的參數(shù)映射表存儲參數(shù)對應(yīng)的原參數(shù)字段名、hive映射字段、hive表名、創(chuàng)建時間等信息。在數(shù)倉的ODS層的數(shù)據(jù)表存儲每個架次所有參數(shù)對應(yīng)的按秒聚合數(shù)據(jù)。查詢時根據(jù)用戶傳入的參數(shù)名、架次信息及其他查詢參數(shù),先從數(shù)倉DIM層的參數(shù)映射表中查詢對應(yīng)參數(shù)在hive存儲的表和映射字段名,拼接封裝查詢的sql。通過presto在數(shù)倉ODS層對應(yīng)的表中查詢指定參數(shù)的數(shù)據(jù),并根據(jù)屏幕分辨率傳遞的高保真顯示要求輸出聚合處理數(shù)據(jù)。
3.2.3 精細查詢
精細查詢實現(xiàn)精細度較高甚至原子粒度數(shù)據(jù)查詢,如圖6所示。在數(shù)倉的ODS層的數(shù)據(jù)表存儲每個架次所有參數(shù)對應(yīng)的按秒聚合數(shù)據(jù),但部分參數(shù)長度過長,無法直接作為字段進行存儲,需要在DIM層創(chuàng)建參數(shù)映射表保存所有架次的參數(shù)映射信息,DIM層的參數(shù)映射表存儲參數(shù)對應(yīng)的原參數(shù)字段名、hive映射字段、hive表名、創(chuàng)建時間等信息。查詢時根據(jù)用戶傳入的參數(shù)名、架次信息及其他查詢參數(shù),先從數(shù)倉DIM層的參數(shù)映射表中查詢對應(yīng)參數(shù)在hive存儲的表和映射字段名,拼接封裝查詢的sql。通過presto在數(shù)倉ODS層對應(yīng)的表中查詢指定參數(shù)的數(shù)據(jù)。
圖6 精細查詢流程
在數(shù)倉ODS層的原始數(shù)據(jù)是以按秒聚合的形式進行存儲,即一條數(shù)據(jù)包含該參數(shù)對應(yīng)頻率秒內(nèi)的全部數(shù)據(jù)。時間列中存儲的時間精確到秒級,不包含微秒的數(shù)據(jù),需要根據(jù)規(guī)則計算按秒聚合中每條數(shù)據(jù)對應(yīng)的微秒值。微秒計算方式為1 000 000除以對應(yīng)頻率后取整,取整方式為去除小數(shù)點,然后將長度補全為6位,不足六位的左邊補零,并依次遍歷獲取每條數(shù)對應(yīng)的微秒值。
3.2.4 特征查詢
如圖7所示,特征查詢在滿足原始數(shù)據(jù)查詢和基于一定規(guī)則過濾數(shù)據(jù)查詢的情況下,實現(xiàn)對查詢的數(shù)據(jù)提取特征,獲取特征數(shù)據(jù)段。在數(shù)倉的DWD層,會創(chuàng)建概覽表保存核心參數(shù)和高頻參數(shù)在不同架次中的秒內(nèi)聚合值(最大值、最小值),以及各類主題分析結(jié)果明細表。對于獲取波峰波谷類型的特征數(shù)據(jù),通過查詢概覽表中的數(shù)據(jù),可以直接獲取架次中指定參數(shù)的該類特征數(shù)據(jù)。對于獲取分析類型的數(shù)據(jù),可通過查詢對應(yīng)主題的分析結(jié)果明細表中獲取分析結(jié)果特征數(shù)據(jù)。
圖7 特征查詢流程
同時也支持通過對ODS層中原始數(shù)據(jù)查詢后,使用算法平臺自定義特征查詢。如對于FFT變換,查詢服務(wù)先查詢DWD層的分析結(jié)果明細表中是否存在已有分析的數(shù)據(jù),若有則直接進行查詢后獲取結(jié)果返回,反之則通過presto查詢ODS層中存儲的按秒聚合數(shù)據(jù),將原始數(shù)據(jù)輸入算法平臺調(diào)用FFT變換算子,獲取變換后的結(jié)果進行返回。
試飛數(shù)據(jù)查詢引擎數(shù)據(jù)計算功能包括時間對齊、插值計算、數(shù)值計算以及參數(shù)合并等計算方式。
時間對齊為了滿足多個參數(shù)值在界面上的統(tǒng)一展示,對于相同頻率的參數(shù),可直接對查詢結(jié)果進行返回。對于不同頻率參數(shù)的數(shù)據(jù)查詢結(jié)果,需要將不同頻率參數(shù)的數(shù)據(jù)進行升頻或降頻成相同頻率,保證多個參數(shù)的數(shù)據(jù)保持在一個頻率上,即同一時間段內(nèi),參數(shù)對應(yīng)的數(shù)據(jù)條數(shù)保持一樣。如3個參數(shù)分別為16頻率、32頻率和64頻率,需要將頻率為16的參數(shù)升頻到32頻率,頻率為64的參數(shù)降頻到32頻率,即一秒內(nèi)的數(shù)據(jù)都是32條。時間對齊服務(wù)通過參數(shù)映射表獲取參數(shù)列表中每個參數(shù)對應(yīng)的原始頻率,將不同頻率參數(shù)的數(shù)據(jù)進行遍歷,對單秒內(nèi)聚合的數(shù)據(jù)進行時間對齊,將每秒內(nèi)的數(shù)據(jù)對齊到同一目標頻率中。時間對齊的邏輯為先將1分別除以原始頻率和目標頻率,獲取兩個頻率的單位時間段,遍歷原始頻率和目標頻率,選擇在對應(yīng)時間段內(nèi)的區(qū)域數(shù)據(jù)。
插值計算服務(wù)通過參數(shù)、架次和時間范圍等信息獲取到原始數(shù)據(jù)后,可支持調(diào)用平臺算法模塊中生成的接口進行二次計算,如插值計算和擬合計算等操作??蓪⑵脚_通過離線服務(wù)包的方式,將自己建好的算法流程打包成sdk并集成到查詢服務(wù)中,后續(xù)對獲取的數(shù)據(jù)調(diào)用生成的sdk進行計算。
數(shù)值計算支持根據(jù)用戶的實際需求自定義UDF函數(shù),將編寫好的UDF函數(shù)打包到 presto集群中進行部署后,結(jié)合sql進行使用??芍С謱γ雰?nèi)的數(shù)據(jù)按值進行過濾,如篩選秒內(nèi)值中大于某個值的數(shù)據(jù)及其對應(yīng)的微秒數(shù),對于32頻率的參數(shù),一秒內(nèi)的單位為1 000 000/32=31 250,則t0=000 000,t1=31 250,t2=62 500,t3=125 000…
將獲取微秒值的處理邏輯封裝為udf函數(shù),打包到presto集群中,后續(xù)的查詢結(jié)合udf函數(shù)獲取按秒聚合數(shù)據(jù)中,每條數(shù)據(jù)對應(yīng)的微秒值,和時間列進行拼接后返回。支持對查詢結(jié)果進行變換處理,如時間對齊、分辨率自適應(yīng)等操作。同時支持對查詢數(shù)據(jù)導(dǎo)出為文本文件,進行持久化保存。
參數(shù)合并對所有參數(shù)的時間對齊后數(shù)據(jù)保持相同的條數(shù)。此時可根據(jù)業(yè)務(wù)需求進行參數(shù)之間的計算,對多個參數(shù)進行合并,如相加、相減等操作。
試飛數(shù)據(jù)查詢引擎按照試飛數(shù)據(jù)平臺數(shù)據(jù)查詢流程,開展數(shù)據(jù)查詢功能和性能驗證,并進行高保真查詢性能驗證。主要步驟如下:
第一步:數(shù)據(jù)查詢輸入
數(shù)據(jù)查詢輸入如表1所示。
表1 查詢對象和條件輸入
第二步:提交查詢請求
通過Https接口協(xié)議,提交到Presto查詢引擎,執(zhí)行數(shù)據(jù)查詢,運行時間對齊UDF函數(shù)。
第三步:輸出查詢結(jié)果
查詢結(jié)果如表2所示。
表2 查詢結(jié)果輸出
試飛數(shù)據(jù)查詢引擎完成數(shù)據(jù)查詢和時間對齊,分別在單表和多表情況下,將對應(yīng)參數(shù)的頻率對齊到32頻率中,實驗結(jié)果如表3所示。
表3 數(shù)據(jù)查詢與時間對齊耗時
表4 高保真數(shù)據(jù)查詢對比
試飛數(shù)據(jù)查詢引擎在指定1 080 P顯示分辨率條件下,開展數(shù)據(jù)對齊到1 920分辨率查詢性能測試,即每次輸出1 920個數(shù)據(jù)點。
試飛數(shù)據(jù)查詢引擎查詢性能達到了秒級響應(yīng),滿足主要查詢場景需求。但是隨著查詢參數(shù)增多、數(shù)據(jù)量增多,查詢響應(yīng)時間會增加,造成數(shù)據(jù)應(yīng)用軟件獲取數(shù)據(jù)等待時間長的問題,因此需要基于試飛數(shù)據(jù)平臺云資源優(yōu)勢,優(yōu)化查詢條件,控制查詢復(fù)雜度,采用分布式并行查詢方式,提升查詢性能。
試飛數(shù)據(jù)查詢引擎立足試飛數(shù)據(jù)平臺優(yōu)勢,應(yīng)用數(shù)據(jù)平臺三層架構(gòu)資源,設(shè)計硬件系統(tǒng)存算分離和異構(gòu)計算資源分配策略,設(shè)計面向數(shù)據(jù)用戶的多類查詢場景,研究新型數(shù)據(jù)存儲方式,開發(fā)數(shù)據(jù)處理自定義函數(shù),完成數(shù)據(jù)查詢功能驗證,發(fā)揮試飛數(shù)據(jù)查詢引擎作為融合試飛數(shù)據(jù)平臺數(shù)據(jù)功能層、服務(wù)功能層與應(yīng)用功能層綜合應(yīng)用工具的核心定位,滿足試飛數(shù)據(jù)應(yīng)用要求。
鑒于試飛數(shù)據(jù)種類多樣化,數(shù)據(jù)隨機性變化,數(shù)據(jù)多地產(chǎn)生等特點,需要持續(xù)優(yōu)化試飛數(shù)據(jù)查詢引擎架構(gòu)設(shè)計,豐富試飛數(shù)據(jù)查詢引擎功能,提升試飛數(shù)據(jù)查詢引擎性能,主要解決問題如下:
1)豐富數(shù)據(jù)接口設(shè)計,兼容更多試飛數(shù)據(jù)類型和數(shù)據(jù)存儲組件,拓展試飛數(shù)據(jù)查詢引擎應(yīng)用場景;
2)優(yōu)化數(shù)據(jù)查詢架構(gòu),發(fā)揮試飛數(shù)據(jù)平臺云原生應(yīng)用與大數(shù)據(jù)計算優(yōu)勢,持續(xù)調(diào)優(yōu)查詢策略,提升并發(fā)查詢能力;
3)深入試飛任務(wù)過程,不斷開發(fā)集成數(shù)據(jù)計算UDF函數(shù),提供更精準、更高效數(shù)據(jù)保真度。
試飛數(shù)據(jù)查詢引擎是試飛數(shù)據(jù)平臺核心組件,有力支持試飛數(shù)據(jù)查詢應(yīng)用,方便快捷響應(yīng)試飛數(shù)據(jù)分析應(yīng)用軟件需求,豐富試飛數(shù)據(jù)平臺三層架構(gòu)內(nèi)涵,拓展試飛數(shù)據(jù)應(yīng)用外延,助力打造試飛數(shù)據(jù)數(shù)據(jù)應(yīng)用生態(tài)。試飛數(shù)據(jù)查詢引擎可以歸集通用功能,整合為一款工業(yè)大數(shù)據(jù)管理與應(yīng)用領(lǐng)域通用工具,推廣至試驗數(shù)據(jù)等諸多領(lǐng)域,挖掘數(shù)據(jù)價值。