999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于流式計算引擎的時空查詢中間件設計與實現

2022-02-03 02:42:14秦俊峰
無線互聯科技 2022年22期

秦俊峰,熊 文

(云南師范大學 信息學院,云南 昆明 650000)

0 引言

傳統關系型數據庫已經無法滿足大規模空間數據的存儲和分析需求。利用大數據組建進行適當擴展,以支持大規模空間數據的存儲、分析計算的方法逐步進入人們的視野,代表性的成果有HadoopGIS[1],GeoSpark等[2],但是這些工具只支持批處理場景下的應用分析,并不支持流式計算場景,因此本文參考GeoSpark的設計機制,擴展了Spark-Streaming功能,實現了一個中間件,這個中間件支持空間數據對象,空間分區和空間索引,并且實現了空間最近鄰域搜索,區域查詢這兩個空間查詢。

1 背景與動機

1.1 空間查詢介紹

常見的空間查詢有空間最近鄰域搜索、區域查詢等。KNN是用來查詢距限定范圍內距離指定空間對象最近的k個空間對象。本文對KNN定義如下:給定一個空間對象集合S和一個查詢空間對象q,以及查詢距離r(r∈(0,+∞)),KNN就是從S中找出q半徑范圍r內距離最近的k個空間對象,記作KNN(P,q,r,k),其形式化的定義如公式(1)所示(pk為距離q第k遠的點)。

KNN(P,q,r,k)={p|p∈P,dist(p,q)≤dist(pk,q)∩dist(p,q)≤r,p≠q}

(1)

RQ是用來查詢給定空間范圍內的某一類、某幾類或者所有的空間對象。本文對RQ的定義如下:給定一個空間對象集合S和一個查詢范圍q,RQ就是從S中找出在范圍q內的所有空間對象,記作Range(P,q)。其形式化的定義如公式(2)所示。

Range(P,q)={p|p∈P,pinsideq}

(2)

1.2 空間分區和空間索引

空間分區按照一定的規則將空間對象劃分為多個不同的集合,是并行查詢或計算的基礎。空間索引對集合內部的空間對象按規則進行組織,減少搜索過程中的無效計算。常見的空間分區方式有網格分區和多級網格分區[3],常見的空間索引方式有四叉樹索引、KDB樹、R樹等[4]。

2 空間查詢在流式場下的實現

本文主要在Spark-Streaming流式計算引擎上實現了KNN,RQ這兩種時空查詢算法。因為Spark-Streaming是一個微批原理的計算引擎,所以兩個查詢算法都是在被查詢數據集組成的RDD以及一個微批次查詢請求數據集組成的RDD上基于Join的原理實現的。

在Spark當中Join是一個非常重量級的操作,因此本文著重對此進行了優化,先將被查詢的POI數據生成一個Spatial RDD,對此RDD進行等網格分區,分區完成后對每個分區建立局部索引,并緩存至內存當中,以供后續查詢使用。接下來便是查詢請求數據,可以根據查詢請求對應的參數,確定請求所涉及的網格分區,執行查詢時只針對查詢所涉及的分區進行計算,這樣多個查詢同時執行,可以大大提高查詢的并行度。因此需要將查詢請求廣播到RDD對應分區的每個節點。從而保證每個請求所涉及的分區都會有該請求的存在。

如圖1所示,KNN和RQ在Spark-Streaming中的DAG。因為一個查詢可能涉及多個分區,每個分區執行Join的查詢后形成中間結果,最后將中間結果進行一次聚合操作,使同一查詢請求在不同分區的中間查詢結果聚集到一起。在進行聚合操作后,RQ便得到了最終的結果,KNN還需要進行過濾和篩選才能得到最終結果。

圖1 空間查詢 DAG

3 實驗

3.1 數據集

本文實驗數據采用深圳市POI數據約260萬條、4.97萬個站點(公交站和地鐵站),這些數據均為經緯度數據。其中深圳市POI數據是被查詢數據,深圳公交站地鐵站經緯度數據用來生成查詢請求。

本文以某乘客在某站點查詢指定半徑范圍內的k個POI,來模擬KNN查詢。每個查詢請求的參數為:KNN(point,r,k)。其中point是查詢中心點,采用深圳公交地鐵站點經緯度點作為查詢中心點;r和k分別為最大查詢半徑長度和需要查詢POI點的個數,這兩個值都采用固定值,分別是1 km和10個。

以某乘客查詢公交或者地鐵站點附近指定矩形范圍內所有的POI點這一應用場景,來模擬RQ查詢。每個RQ查詢請求的具體參數為:Rangequery(point1,point2),其中point1,point2分別為查詢矩形范圍的左下角和右上角。將深圳公交地鐵經緯度點作為查詢矩形范圍的中心點,矩形的長和寬分別為1.1 km和1 km,從而計算出point1和point2。

3.2 實驗結果與分析

如圖2所示,KNN查詢在Spark-Streaming微批時間間隔分別為0.2 s,0.4 s和0.6 s時的實驗結果。其中橫坐標為請求的提交速度,左邊的縱坐標為系統的吞吐,右邊的縱坐標為查詢對應的時延。

這些實驗圖結果都呈現出一個相同的規律,即在數據流流速尚未達到一個臨界值的時候,吞吐隨著數據流流速的增加而上升,且滿足一個線性增長的規律,時延呈現出緩慢增長的趨勢,且在當前微批時間間隔內;當數據流流速超出臨界值的時候,吞吐雖然還會繼續增長,但是增速會放緩,此時的時延會快速增加,且超出當前的微批間隔。在工程應用當中,當時延大量超過微批時間間隔時,便會導致程序變得不再“實時”,因此定義數據流流速達到臨界值時的吞吐為最佳吞吐。

從圖2可以看出,KNN的最佳吞吐都會隨著批處理間隔的增加而上升,分別是0.2 s時900 op/s、0.4 s時2 000 op/s、0.6 s時2 600 op/s。RQ也是呈現出相同趨勢,其最佳吞吐分別是0.2 s時400 op/s、0.4 s時500 op/s、0.6 s時700 op/s。在達到最佳吞吐時,這兩個空間查詢算法的平均時延和微批時間間隔也近似相等。盡管單個請求的查詢時延從批處理對應的0.1 s增加到流式計算對應的0.2 s。但是吞吐這個指標與批處理環境下相比提升幾十倍甚至上百倍。具體來講,批處理場景下KNN和RQ的吞吐分別是9 op/s和10 op/s,流式場景下兩種查詢對應的吞吐分別為900 op/s和400 op/s。可以得出初步的結論,在流式計算場景下以0.1 s的時間為代價換取了KNN查詢接近100倍的性能提升,RQ查詢近40倍的性能提升。

圖2 空間最近鄰域搜索實驗結果

4 結語

本文通過Spark-Streaming流式計算引擎實現了KNN和RQ這兩個空間查詢算法,其性能相比較于批處理環境下的空間查詢均有很大的提升。具體來講,批處理場景下吞吐為9 op/s,時延為0.1 s,流式計算場景下吞吐為900 op/s, 時延為0.2 s。以0.1 s的代價換取吞吐提升100倍,能夠解決大規模實時查詢的需求。在下一步的工作中,可以嘗試在Flink流式計算引擎上來實現空間查詢算法,進一步提升查詢性能。

主站蜘蛛池模板: 久无码久无码av无码| 国产白丝av| 香蕉视频在线精品| 91年精品国产福利线观看久久| 人妻一本久道久久综合久久鬼色| 日韩AV无码免费一二三区| 五月婷婷激情四射| 女人av社区男人的天堂| 欧洲成人在线观看| 久久国产高潮流白浆免费观看| 久久网欧美| 亚洲精品无码日韩国产不卡| 91九色最新地址| 91小视频版在线观看www| 91精品情国产情侣高潮对白蜜| 国内a级毛片| 国模私拍一区二区| 国产9191精品免费观看| 国产成人精品第一区二区| 亚洲人成日本在线观看| 波多野结衣一区二区三区四区| 久久人搡人人玩人妻精品| 亚洲美女高潮久久久久久久| 国产精品区视频中文字幕| 波多野结衣一区二区三区四区 | 华人在线亚洲欧美精品| 97色伦色在线综合视频| 国产精品久久久久无码网站| 国产在线精彩视频二区| 综合色在线| 中文字幕在线视频免费| 亚洲欧美一区在线| 国产va免费精品观看| 精品福利视频网| 97免费在线观看视频| 亚洲日韩在线满18点击进入| 亚洲国产欧美国产综合久久 | 久久黄色小视频| 亚洲国产成人超福利久久精品| 中国毛片网| 浮力影院国产第一页| 免费人成在线观看成人片| 亚洲国产成熟视频在线多多| 久久久久久国产精品mv| 国产小视频a在线观看| 亚洲欧美日韩中文字幕在线一区| 尤物精品国产福利网站| 亚洲大学生视频在线播放| 亚洲精品自拍区在线观看| 亚洲国产第一区二区香蕉| 精品少妇三级亚洲| 四虎永久在线精品国产免费 | 天堂网亚洲系列亚洲系列| 伊人色综合久久天天| 天堂成人在线视频| 久草视频精品| 伊人色天堂| 成人精品区| 一本一道波多野结衣一区二区 | 综合色在线| 日本一区高清| 久久亚洲国产视频| 本亚洲精品网站| 欧美一级高清视频在线播放| 亚亚洲乱码一二三四区| 亚洲精品无码日韩国产不卡| 精品无码一区二区三区在线视频| 国产精品美乳| 四虎精品免费久久| 欧美成人精品高清在线下载| 精品91在线| 手机在线国产精品| 男女男免费视频网站国产| 国模粉嫩小泬视频在线观看| 九色综合视频网| 丁香婷婷激情网| 国产91高跟丝袜| 中文纯内无码H| 国产三区二区| 国内精品九九久久久精品| 亚洲综合狠狠| 久久精品女人天堂aaa|