貴州省氣象服務(wù)中心 貴州 貴陽 550002
隨著時代的發(fā)展,氣象資料信息服務(wù)從專業(yè)化向云計算服務(wù)轉(zhuǎn)變,這給氣象數(shù)據(jù)信息的實時性查詢和分析帶來更高的要求。分析當(dāng)前氣象服務(wù)中心業(yè)務(wù)中實時氣象數(shù)據(jù)服務(wù)存在的問題,一方面是傳統(tǒng)溫度、雨量等空間索引方法的設(shè)計一般是建立在磁盤特性基礎(chǔ)上的,需要多次訪問才能實現(xiàn)對實況空間大數(shù)據(jù)的實時查詢分析,這會導(dǎo)致時效性不佳。另一方面是磁盤性能存在問題,無法高效存儲持續(xù)增加的大量空間數(shù)據(jù),所以難以支持高并發(fā)用戶的實時查詢服務(wù)?;诖?,我們提出利用Spark建立空間大數(shù)據(jù)實時查詢分析技術(shù),解決上述存在的問題。
Spark是專門為大規(guī)模的數(shù)據(jù)處理所涉及出的快速通用計算引擎,優(yōu)點較多,快速、簡潔、操作簡單、通用性強,有多種運行模式,而且在工作期間輸出的結(jié)果信息可以充分保存在內(nèi)存中。在Spark的基礎(chǔ)上建立數(shù)據(jù)計算處理框架,同時與SIMBA(分布式空間數(shù)據(jù)系統(tǒng))相結(jié)合,優(yōu)化信息檢索流程,進行科學(xué)分析,可以借助內(nèi)存分布數(shù)據(jù)集打造出允許交互查詢和優(yōu)化迭代工作負(fù)載的計算處理框架。因為Spark可以利用內(nèi)存分布數(shù)據(jù)集進行數(shù)據(jù)分析,而且分析過程產(chǎn)生的中間結(jié)果都會保存在內(nèi)存中,所以可以解決過去框架中處理數(shù)據(jù)導(dǎo)致的磁盤效率較低的問題。
Spark的氣象雷達回波數(shù)據(jù)庫中,設(shè)置有數(shù)據(jù)組織處理結(jié)構(gòu)化數(shù)據(jù)模塊Spark DataFrame,這是建立在RDD的基礎(chǔ)上的。利用分布式大數(shù)據(jù)可以對數(shù)據(jù)庫進行分類,提升處理效率。而對于具體的數(shù)據(jù),可以借助分區(qū)策略進行優(yōu)化,而Spark DataFrame可以幫助操作人員實現(xiàn)對數(shù)據(jù)庫的分類,并提供系統(tǒng)的操作程序,將數(shù)據(jù)集中處理,進一步提升數(shù)據(jù)查詢檢索效率,改善框架的性能。
另外,為了優(yōu)化大數(shù)據(jù)背景下的氣象實況信息檢索功能,以SIMBA為基礎(chǔ),借助局部索引和過濾優(yōu)化等操作,可以不修改Spark的內(nèi)核,使得系統(tǒng)嵌入到Spark系統(tǒng)中。在這個背景下進行信息索引,可以準(zhǔn)確界定數(shù)據(jù)范圍。
在進行氣象實況大數(shù)據(jù)索引時,為了提高系統(tǒng)性能,需要對其進行優(yōu)化,所以提出應(yīng)用SIMBA的思路,對Spark進行優(yōu)化和數(shù)據(jù)庫索引,并保存在特定的內(nèi)存中,用以提高檢錯性能。進行大數(shù)據(jù)的研究,使用Spark存儲數(shù)據(jù),可以查詢數(shù)據(jù)集中的相關(guān)信息,同時在空間范圍內(nèi)完成索引,可以提升檢索效率,使用解析器可以進行空間信息操作,進行分區(qū),采取全局過濾和局部空間的模式。在Spark系統(tǒng)中,使用數(shù)據(jù)分區(qū)進行數(shù)據(jù)分布的優(yōu)化,利用操作符完成相關(guān)操作,提高查詢性能,分布式計算中可以利用抽象類分區(qū)標(biāo)準(zhǔn)進行分區(qū)。
在這里,標(biāo)準(zhǔn)主要是按照分區(qū)大小、數(shù)據(jù)局部性以及負(fù)載均衡進行分區(qū)。首先,使用RDD接收數(shù)據(jù)集及其范圍邊界傳值。其次,在預(yù)定義采樣率的基礎(chǔ)上,對數(shù)據(jù)分布情況進行預(yù)測,對原始數(shù)據(jù)劃分成不同分區(qū),如果某個分區(qū)的數(shù)據(jù)含量超過平均值,需要重新采樣劃分。通過分區(qū)操作可以盡量保證各數(shù)據(jù)分布均勻,不同分區(qū)之間進行有序排列。利用采集分區(qū)完成數(shù)據(jù)集的分區(qū),可以滿足均衡負(fù)載的要求。而且這樣的話,空間位置相近的數(shù)據(jù)可以實現(xiàn)分區(qū)數(shù)據(jù)的局部性能。
全局過濾:按照數(shù)據(jù)分區(qū)的方式完成數(shù)據(jù)集,將之劃分為大小相近的分區(qū),可以提升查詢效率。但是進行空間查詢時,需要利用全局掃描的方式篩選信息,所以利用全局過濾的方式可以減少需要掃描的分區(qū),利用分區(qū)函數(shù)計算每個分區(qū)邊界,將計算數(shù)據(jù)保存在數(shù)組中,這樣進行空間查詢就可以判斷查詢點所在的分區(qū)邊界,進行篩選,從而減少工作量,提升查詢效率。
局部索引:Spark數(shù)據(jù)處理框架在不同分區(qū)收集時,可以按照線段樹的模式實現(xiàn),在線段樹的基礎(chǔ)上進行空間壓縮,可以快速尋找到需要的數(shù)據(jù)。在應(yīng)用時,首先需要計算出分區(qū)邊界值的中間值,以此作為根節(jié)點,然后利用根節(jié)點將空間劃分成三部分,左、中、右集合,如果想要使用線段樹完成某個范圍內(nèi)的信息查詢時,需要與節(jié)點值對比,如果<節(jié)點值,就在左集合查找,如果>節(jié)點值就在右集合查找,最終找到對應(yīng)的節(jié)點值。使用Spark優(yōu)化之后,進行語句查詢,轉(zhuǎn)化成抽象語法,然后進行解析,得到對應(yīng)的表屬性和查詢條,在這個過程中,還能實現(xiàn)對錯誤的糾正操作。
4.1 集群計算 利用Spark的分布式框架,完成氣象實況數(shù)據(jù)索引,將期間的中間結(jié)果保存在內(nèi)存中,然后利用數(shù)據(jù)分區(qū)標(biāo)準(zhǔn)進行優(yōu)化數(shù)據(jù)分布,利用全局過濾和局部索引的方式完成索引操作。在空間范圍內(nèi)進行查詢,并對查詢到的數(shù)據(jù)進行分析嵌入空間索引優(yōu)化,之后利用分布式計算處理時空數(shù)據(jù),提升查詢效率。
4.2 系統(tǒng)框架 在Spark系統(tǒng)基礎(chǔ)上,利用Spark SQL進行范圍查詢,具有延遲交底,吞吐量高的優(yōu)勢。在具體應(yīng)用時,利用解析器將語句解析成抽象語法樹,然后使用優(yōu)化器補充完整其中的邏輯。從查詢方式分析,使用Spark Catalyst可以通過解析器進行空間查詢,選擇對應(yīng)的關(guān)鍵字、關(guān)鍵詞進行數(shù)據(jù)和特定對象的查詢,這樣可以將查詢對象控制在某個范圍內(nèi),提升查詢效率。從關(guān)鍵字接口分析,以關(guān)鍵字為主題進行查詢,可以使用空間節(jié)點范圍內(nèi)的關(guān)鍵字作為查詢語言,用此表達空間對象,可以優(yōu)先匹配查詢需求。這樣利用空間范圍借助系統(tǒng)進行查詢,能夠?qū)?shù)據(jù)集中在某個范圍內(nèi),查詢出所有相關(guān)記錄,效率較高。
在5G時代貴州大力發(fā)展大數(shù)據(jù)產(chǎn)業(yè),氣象服務(wù)需求必將大幅增加,給空間大數(shù)據(jù)的應(yīng)用帶來更多的難題。所以本文基于Spark分布式內(nèi)存計算框架,從查詢分析、解決方案、查詢方法設(shè)計三個方面,研究解決基于Spark的空間氣象實況大數(shù)據(jù)實時查詢分析的關(guān)鍵技術(shù)。