被忽視的點陣圖資料庫:Pilosa查詢十億級計程車搭乘數據案例
Pilosa 是一個開源的分布式內存點陣圖索引,可以針對海量數據集對查詢進行加速,適合在用戶數據查詢以及用戶畫像等場景使用,但在另外一方面,非稀疏的關係型數據是否也可以使用 Pilosa 來查詢?
本文閱讀需要 4 分鐘。
Pilosa 最初是為分析用戶屬性數據(稀疏並且高基數)而準備的。所以當我們準備圍繞 Pilosa 創建一家公司時,第一步就是評估在其他類型數據上的效果。
雖然用戶細分的屬性數量非常多,但數據卻非常稀疏,這是因為很多屬性只與少數人相關聯,大部分人只有幾百個或幾千個屬性。 Pilosa 可以非常優雅地處理這種場景,它能夠在幾毫秒內篩選數百萬個屬性的任意組合,從而找到滿足該條件的用戶。
圖片由 Umbel 提供
對於用戶細分數據,我們可以使用 Pilosa 處理這類問題。然而,如果我們希望 Pilosa 成為通用索引,那麼它將不僅能支持分段查詢而且不僅再稀疏而高基數的數據上工作。
為了測試 Pilosa,我們需要一個具有密集的,較低基數的數據集,並最好是能通過其他解決方案進行探討,以便評估我們如何處理該問題。
紐約市政府開放的十億計程車搭乘數據集(下載請參閱文末鏈接 4)完美符合以上條件,有很多分析該數據的文章,下面列出的僅僅是少數幾個鏈接:
(譯者註:數據集中包含上下車時間、地點、距離、車費、支付方式、乘客人數等欄位)
Analyzing 1.1 Billion NYC Taxi and Uber Trips, with a Vengeance [1]
Kx 1.1 billion taxi ride benchmark highlights advantages of kdb+ architecture [2]
Should I Stay or Should I Go? NYC Taxis at the Airport [3]
對我們特別有用的是 Mark Litwintschik 和他編製的性能比較表的系列文章,這是結果表格供參考,其中分別使用了 Spark, PostgreSQL, Elasticsearch 等資料庫來查詢。
我們對 Pilosa 執行了相同的四個查詢,以便我們可以同其他解決方案的性能進行比較。
以下是每個查詢的描述:
每個司機搭乘了多少位乘客?
對於每位乘客來說,打車平均花多少錢?
每一年,每位乘客會打幾次車?
對於不同乘客人數,年份,旅行距離的組合,乘客數量有多少,結果按年度乘客數量降序排列。
現在我們有一個數據集和一組查詢,都遠遠超出了 Pilosa 的最適合做的領域,以及對不同硬體/軟體組合的長期性能對比。
如果您想了解如何在 Pilosa 中建模數據集並構建查詢,請參閱我們的運輸用例文章 [6]。
現在我們並非只有數千萬的 boolean 屬性,其中一些屬性具有更複雜的類型:整數,浮點,時間戳等等。總而言之,相比之下這個數據集更適合用關係型資料庫。
我們在 AWS c4.8xlarge 實例上架起了一個 3 節點的 Pilosa 集群,並附加了一個 c4.8xlarge 實例來載入數據。我們使用 pdk 工具將數據載入到 Pilosa 中,使用以下命令行參數:
pdk taxi -b 2000000 -c 50 -p 這個過程需要大約 2 小時 50 分鐘,其中包括從 S3 下載所有的 csv 文件,解析它們,並將數據載入到 Pilosa 中。 如果我們將結果添加到 Mark 表中,它將如下所示: 請注意,每個組合的軟硬體都不同,所以直接比較是很困難的。 我們應該注意到,Pilosa 在「查詢1」上有一些「作弊」(由於其存儲數據的方式,Pilosa 已經預先計算了此結果),因此查詢時間大部分是網路延遲。 然而,對於其餘的查詢,Pilosa 表現非常出色 - 在某些情況下,可以勝過異構硬體,如多 GPU 配置。查詢3 的 0.177s 時間特別令人吃驚,與 Nvidia Pascal Titan Xs 的表現相似。看起來 kdb+/q 也很好,但是請記住,Xeon Phi 7210 每個晶元有 256 個硬體線程,以及 16GB 的內存。這使它們的性能和內存帶寬更接近於 GPU。當然價格也很貴,約 2400 美元。 對於我們來說,這些結果足以讓我們花費更多的時間優化 Pilosa 用於其他方面。由於 Pilosa 的內部點陣圖壓縮格式沒有針對密集數據進行優化,我們在這方面進行了更多的研究,並獲得了令人振奮的結果,所以我們有理由認為這些數字還有很大的改進空間。 更多了解 Pilosa 源代碼: https://github.com/pilosa/pilosa
※架構未來怎麼寫,Facebook、Uber、Airbnb、Yahoo!給你這些答案
※分布式服務框架選型:面對Dubbo,阿里巴巴為什麼選擇了HSF?
※是的,為了更好的支持微服務,我們從PHP遷移到了Go
※人工智慧應用微服務化:從模型到線上系統搭建的最佳實踐
TAG:高可用架構 |
※Volocopter展示未來飛行計程車構想 每天運送萬名乘客
※電動飛行計程車公司Joby Aviations獲JetBlue、豐田1億美元投資
※調查顯示西雅圖Uber、Lyft使用率是計程車的3.5倍
※絕對亮眼醒目!計程車配色 Air Jordan 1 Mid 即將來襲
※計程車配色又來了,這一次是 Jordan 6 Rings
※Volocopter展示了它的第一架商用空中計程車
※Volocopter公司推出VoloCity eVTOL空中計程車
※Waymo無人駕駛計程車上線:科技感爆棚,還比Uber便宜
※世界上第一輛電動飛行計程車Lilium Jet
※Uber 宣布在墨爾本推出 Uber Air 空中計程車試點項目
※真正的「飛車」:空中計程車Volocopter迪拜試飛成功
※Volocopter準備建立城市「空中計程車」系統
※Alphabet CEO投資的Kitty Hawk公司推出飛行計程車 最快三年後商用
※Waymo One無人駕駛計程車體驗調查:一個時代悄然來臨?
※奧迪「試飛」概念飛行計程車Pop.Up Next
※Waymo 推出自動駕駛計程車服務 Waymo One
※基於核彈Drive Pegasus,博世、戴姆勒與英偉達組「鐵三角」開發自動駕駛計程車
※當科幻成為現實,首架空中計程車『vertiport』即將開始測試
※戴姆勒與博世合作開發自動駕駛計程車,將搭載英偉達「Drive Pegasus」平台
※波音和SpaceX分別推遲各自的「太空計程車」計劃