1.概述
Apache Arrow 是 Apache 基金會(huì)全新孵化的一個(gè)頂級項(xiàng)目。它設(shè)計(jì)的目的在于作為一個(gè)跨平臺的數(shù)據(jù)層,來加快大數(shù)據(jù)分析項(xiàng)目的運(yùn)行速度。
2.內(nèi)容
現(xiàn)在大數(shù)據(jù)處理模型很多,用戶在應(yīng)用大數(shù)據(jù)分析時(shí),除了將 Hadoop 等大數(shù)據(jù)平臺作為一個(gè)存儲(chǔ)和批處理平臺之外,同樣也得關(guān)注系統(tǒng)的擴(kuò)展性和性能。過去開源社區(qū)已經(jīng)發(fā)布了很多工具來完善大數(shù)據(jù)分析的生態(tài)系統(tǒng),這些工具包含了數(shù)據(jù)分析的各個(gè)層面,例如列式存儲(chǔ)格式(Parquet,ORC),內(nèi)存計(jì)算模型(Drill,Spark,Impala 和 Storm)以及其強(qiáng)大的 API 接口。而 Arrow 則是最新加入的一員,它提供了一種跨平臺應(yīng)用的內(nèi)存數(shù)據(jù)交換格式。
在數(shù)據(jù)快速增長和復(fù)雜化的情況下,提高大數(shù)據(jù)分析性能一個(gè)重要的途徑是對列式數(shù)據(jù)的設(shè)計(jì)和處理。列式數(shù)據(jù)處理借助了向量計(jì)算和 SIMD 使我們可以充分挖掘硬件的潛力。而 Apache Drill 其大數(shù)據(jù)查詢引擎無論是在硬盤還是內(nèi)存中數(shù)據(jù)都是以列的方式存在的,而 Arrow 就是由 Drill 中的 Value Vector 這一數(shù)據(jù)格式發(fā)展而來。此外,Arrow 也支持關(guān)系型和動(dòng)態(tài)數(shù)據(jù)集。
Arrow 的誕生為大數(shù)據(jù)生態(tài)帶來了很多可能性,有了 Arrow 作為今后標(biāo)準(zhǔn)數(shù)據(jù)交換格式,各個(gè)數(shù)據(jù)分析的系統(tǒng)和應(yīng)用之間的交互性可以說是揭開了新的篇章。過去大部分的 CPU 周期都花在了數(shù)據(jù)的序列化與反序列化上,現(xiàn)在我們則能夠?qū)崿F(xiàn)不同系統(tǒng)之間數(shù)據(jù)的無縫鏈接。這意味著使用者在不同系統(tǒng)結(jié)合時(shí),不用在數(shù)據(jù)格式上話費(fèi)過多的時(shí)間。
3.Arrow Group
Arrow 的內(nèi)存數(shù)據(jù)結(jié)構(gòu)如下所示:
從上圖中,我們可以很清晰的看出,傳統(tǒng)的內(nèi)存數(shù)據(jù)格式,各個(gè)字段的分布是以沒一行呈現(xiàn),相同字段并未集中排列在一起。而通過 Arrow 格式化后的內(nèi)存數(shù)據(jù),可以將相同字段集中排列在一起。我們可以很方便的使用 SQL 來操作數(shù)據(jù)。
傳統(tǒng)的訪問各個(gè)數(shù)據(jù)模型中的數(shù)據(jù)以及使用 Arrow 后的圖,如下所示:
通過上圖可以總結(jié)出以下觀點(diǎn):
每個(gè)系統(tǒng)都有屬于自己的內(nèi)存格式。
70~80% 的 CPU 浪費(fèi)在序列化和反序列化上。
在多個(gè)項(xiàng)目都實(shí)現(xiàn)的類似的功能(Copy & Convert)。
而在看上述使用 Arrow 后,得出以下結(jié)論:
所有的系統(tǒng)都使用相同的內(nèi)存格式。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26