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