• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Arrow在分布式查詢引擎中的應(yīng)用與研究

    2021-09-09 07:36:24張世同
    現(xiàn)代計算機 2021年19期
    關(guān)鍵詞:引擎

    張世同

    (北京云至科技有限公司南京分公司,數(shù)據(jù)服務(wù)產(chǎn)品研發(fā)部,南京 211801)

    0 引言

    近年來,大數(shù)據(jù)技術(shù)領(lǐng)域列式存儲成為主流,現(xiàn)代CPU技術(shù)借助流水線技術(shù)、SIMD(Single Instruction Multiple Data)指令、向量計算,大幅提升處理性能。內(nèi)存越來越廉價,借助內(nèi)存提升性能成為可能。數(shù)據(jù)來源復(fù)雜,數(shù)據(jù)格式多樣化,出現(xiàn)了復(fù)雜、嵌套數(shù)據(jù)格式。用戶對數(shù)據(jù)處理效率的要求日益迫切。

    以Presto、Drill、Impala、Kylin為代表的查詢引擎采用MPP技術(shù),使用SQL的方式,對底層異構(gòu)的大數(shù)據(jù)存儲進行訪問。未來查詢引擎向數(shù)據(jù)發(fā)現(xiàn)、數(shù)據(jù)治理、自助服務(wù)的方向發(fā)展,即讓業(yè)務(wù)人員在無IT人員的參與下,可以順利工作,從繁雜的原始數(shù)據(jù)中,發(fā)現(xiàn)數(shù)據(jù)、聚合數(shù)據(jù)、形成高質(zhì)量的數(shù)據(jù)、發(fā)布數(shù)據(jù)服務(wù)。這時,查詢引擎的查詢、更新性能就變得尤為重要。

    本文介紹了一種基于MPP和Arrow內(nèi)存列存儲的數(shù)據(jù)查詢引擎ADE(Agile Data Engine)的設(shè)計和實現(xiàn),ADE有效提升了查詢引擎本身的性能和跨系統(tǒng)數(shù)據(jù)通訊效率,再結(jié)合預(yù)計算和SQL重寫技術(shù)能夠滿足OLAP場景下常規(guī)查詢和即席查詢(1)常規(guī)查詢在系統(tǒng)設(shè)計時是已知的,可以事先通過建立索引、分區(qū)等技術(shù)來優(yōu)化。而即席(ad-hoc)查詢是用戶在使用時臨時產(chǎn)生的,系統(tǒng)無法預(yù)先優(yōu)化這些查詢,所以即席查詢也是一個重要指標(biāo)的需求。

    1 研究現(xiàn)狀

    1.1 分布式查詢引擎的現(xiàn)狀

    分布式查詢引擎的興起,起源于Google的Dremel,隨后Cloudera開源了大數(shù)據(jù)查詢分析引擎Impala,F(xiàn)acebook開源了Presto,Hortonworks開源了Stringer,Apache基于Hadoop原生SQL的HAWQ[9],國內(nèi)的Kylin、Druid等。Apache基金會的頂級項目Drill是業(yè)界比較接受的Dremel的開源實現(xiàn)。文獻[5]將這些分布式查詢引擎分為基于預(yù)計算思想的計算引擎和實時計算引擎兩類。

    基于預(yù)計算思想的計算引擎,通過提前的聚合存儲操作,通過SQL重寫技術(shù)把一個計算任務(wù)轉(zhuǎn)換成查詢操作,本質(zhì)上減少計算量,如Kylin[15]。該類查詢引擎的缺點:①立方體的構(gòu)建具有維度爆炸問題,無論對計算能力還是存儲能力都提出了挑戰(zhàn)。②由于數(shù)據(jù)查詢分析分布具有聚集性,所以,立方體中的大量club從來沒有使用過,浪費了計算資源和存儲資源。所以對該類查詢引擎的研究,主要是立方體物化策略的研究[5]。

    實時計算引擎,每次查詢都需要對數(shù)據(jù)進行聚合計算,所以實時性并不是很高不能達到實時的標(biāo)準(zhǔn)[5]。對該類引擎的研究,主要集中在優(yōu)化執(zhí)行計劃和存儲,如位圖索引、列式存儲[1,3]、查詢計劃優(yōu)化[2,6]等。查詢計劃優(yōu)化研究,目前有基于規(guī)則、成本、運行時的查詢計劃優(yōu)化以及基于算法的查詢優(yōu)化等。

    1.2 內(nèi)存列式存儲的現(xiàn)狀

    目前內(nèi)存數(shù)據(jù)庫已經(jīng)成熟,常見的內(nèi)存數(shù)據(jù)庫有SAP-HANA[18]、Ignite、Geode等。SAP-HANA支持行存儲和列存儲,而Ignite和Geode都是以Key-Value格式存儲。它們在分布式內(nèi)存網(wǎng)絡(luò)方面,都已經(jīng)有了成熟的實現(xiàn)和應(yīng)用。

    在大數(shù)據(jù)MPP計算領(lǐng)域,列存儲也已經(jīng)普遍,如文件列存儲格式Parquet、Avro等;內(nèi)存列存儲格式如SAP-HANA、Spark、Drill等都在應(yīng)用。但是目前內(nèi)存列存儲格式還由各軟件自行定義和進行內(nèi)存管理,沒有統(tǒng)一的格式標(biāo)準(zhǔn)和讀寫接口,這就意味著跨系統(tǒng)數(shù)據(jù)傳輸時,避免不了數(shù)據(jù)序列化反序列化操作。

    紐約大學(xué)的Pilaf[16]和微軟研究院的FaRM[17]采用RDMA(Remote Direct Memory Access)技術(shù),實現(xiàn)內(nèi)部節(jié)點之間的數(shù)據(jù)通訊和整個分布式系統(tǒng)對外共享內(nèi)存讀寫接口,較少序列化反序列化,極大提高效率。

    Arrow內(nèi)存列存儲就是為了解決當(dāng)前內(nèi)存列存儲無標(biāo)準(zhǔn)的問題,它為內(nèi)存列存儲格式和數(shù)據(jù)讀寫接口提供了標(biāo)準(zhǔn),并已經(jīng)實現(xiàn)了C++、Go、Java、Python、R、Ruby和Rust等多種編程語言,可以有效提升查詢引擎的效率又可以實現(xiàn)跨系統(tǒng)數(shù)據(jù)傳輸,而無需進行數(shù)據(jù)序列化反序列化。

    2 Arrow技術(shù)基礎(chǔ)

    Arrow是跨語言、跨平臺的內(nèi)存列式存儲格式。具備傳統(tǒng)列式存儲的優(yōu)勢,同時具有內(nèi)存數(shù)據(jù)快速訪問、復(fù)雜格式、內(nèi)存網(wǎng)格化的優(yōu)勢。Arrow具備以下特征:①充分利用現(xiàn)代高性能CPU的SIMD指令,支持向量計算。②利用內(nèi)存緩存區(qū), 線性緊湊定義數(shù)據(jù)結(jié)構(gòu),提高Cache命中率和CPU讀取數(shù)據(jù)效率。③統(tǒng)一內(nèi)存格式,避免或減少異構(gòu)系統(tǒng)之間序列化反序列化。④利用共享內(nèi)存或者直接內(nèi)存訪問,實現(xiàn)zero-copy。⑤支持復(fù)雜數(shù)據(jù)Schema和動態(tài)Schema。⑥易于采用內(nèi)存網(wǎng)格化技術(shù),實現(xiàn)分布式內(nèi)存計算,大幅提高性能。

    2.1 Arrow內(nèi)存布局

    Arrow內(nèi)存結(jié)構(gòu)支持基本類型(固定長度)、可變長度二進制、固定長度List、可變長度List、結(jié)構(gòu)體類型、稀疏聯(lián)合類型、Null類型、字典類型等。這些指的是物理存儲類型,所有邏輯數(shù)據(jù)類型,均使用這些物理存儲類型設(shè)計。邏輯類型為整型、長整型、日期類型、字符串類型等。

    圖1 Int32的向量內(nèi)存布局

    Int32向量的內(nèi)存布局如圖1所示,元數(shù)據(jù)記錄向量長度、空值個數(shù),理論最多可以存儲231-1元素。Bitmap位圖,記錄非空值索引,例如示例中有效bitmap為1字節(jié),字節(jié)長度對齊為64字節(jié)(2)64字節(jié)對齊,取決于IntelCPU AVX-512指令集特點,對512位64字節(jié)提供更高的性能。。

    is_valid[j]->bitmap[j/8]&(1<<(j%8))

    (1)

    判斷位置j是否為有效值is_valid為公式(1):內(nèi)存緩沖區(qū)是一段連續(xù)的內(nèi)存區(qū),按照64字節(jié)長度對齊。對于空值,不分配字節(jié)值。

    圖2 字符串向量內(nèi)存布局

    字符串類型的向量內(nèi)存布局使用可變長度List物理內(nèi)存結(jié)構(gòu)。如圖2所示,字符串向量通過嵌套格式,在Char數(shù)組上增加offset偏移量索引實現(xiàn)。Null和[]同樣記錄索引和前一個相等。Bitmap、Offset buffer和內(nèi)存緩沖區(qū)均補齊64字節(jié)。字符開始位置slot_position計算為公式(2);字符串長度slot_length計算公式(3)。

    slot_position=offsets[j]

    (2)

    slot_length=offsets[j+1]-offsets[j]

    (3)

    有些屬性列是關(guān)聯(lián)字典,重復(fù)存儲造成空間浪費、影響檢索性能??梢栽O(shè)計成字典類型、通過Int32索引引用字典值。

    2.2 Arrow內(nèi)存模型

    Arrow 基于NettyJEMalloc實現(xiàn)了內(nèi)存分配器Allocator,它基于數(shù)據(jù)塊分配器內(nèi)存。整個內(nèi)存結(jié)構(gòu)呈樹型結(jié)構(gòu),如圖3所示。

    圖3 內(nèi)存分配器(Allocator)的樹型結(jié)構(gòu)

    樹型結(jié)構(gòu)的內(nèi)存分配器(Allocators),有利于分功能分配、管理、檢測、回收部分內(nèi)存區(qū)。每個內(nèi)存分配器有預(yù)留容量(可用于計算)和最大容量。預(yù)留容量不會被數(shù)據(jù)占用,這意味著整個生命周期中都是被計算分配的。Arrow向量數(shù)組使用Off-heap堆外內(nèi)存。手工管理和釋放內(nèi)存區(qū),不依賴于GC。內(nèi)存負(fù)載管理,檢測內(nèi)存溢出風(fēng)險、檢測內(nèi)存分配器的使用情況,決定是否寫入部分?jǐn)?shù)據(jù)到磁盤。每個查詢計劃Operator都創(chuàng)建了一個Allocator,它還可以創(chuàng)建自己的子Allocator,用于對該Operator內(nèi)的每個數(shù)據(jù)分片進行處理。

    2.3 Arrow數(shù)據(jù)傳輸格式

    Arrow 以Batch的方式,封裝數(shù)據(jù)及其模式進而進行數(shù)據(jù)傳輸。即用Batch的方式把一定數(shù)量的數(shù)據(jù)記錄(包括所有屬性列)及其Schema封裝在Record Batch中。有Dictionary Batch和Record Batch兩種形式。數(shù)據(jù)傳輸?shù)腗essage邏輯結(jié)構(gòu)如圖4。

    圖4 數(shù)據(jù)傳輸Message邏輯結(jié)構(gòu)

    數(shù)據(jù)模式(Schema)定義了數(shù)據(jù)的邏輯結(jié)構(gòu),屬性邏輯類型,指定了屬性的字典類型編碼。字典類型Batch,把字典屬性進行編碼存儲,記錄中僅存儲字典編碼。記錄類型Batch分屬性向量存儲實際數(shù)據(jù)。

    以記錄類型Batch為例,其數(shù)據(jù)分為:數(shù)據(jù)頭、各屬性的bitmap區(qū)、offsets區(qū)、數(shù)據(jù)區(qū)。其中數(shù)據(jù)頭記錄該batch的類型(Dictionary batch、Record batch、Schema),各屬性向量的長度和空值個數(shù),各屬性向量的內(nèi)存地址。一個屬性向量占用連續(xù)的物理內(nèi)存,整個Batch在網(wǎng)絡(luò)傳輸時,連續(xù)字節(jié)傳輸。一個Batch中可以存儲 1-64K條數(shù)據(jù)記錄。

    3 ADE架構(gòu)設(shè)計與關(guān)鍵技術(shù)

    ADE包含Coordinator、Executor兩個角色,兩者通過zookeeper協(xié)調(diào)。Zookeeper記錄了Coordinator和Executor的節(jié)點名稱、IP、內(nèi)存、CPU等信息。Coordinator負(fù)責(zé)接收用戶端SQL請求、解析SQL語法樹、生成Logic Plan、獲取并存儲數(shù)據(jù)表的元數(shù)據(jù)、分配Executor節(jié)點、執(zhí)行每個分區(qū)數(shù)據(jù)的Logic Plan,并匯總SQL結(jié)果返回給客戶端。Executor負(fù)責(zé)執(zhí)行在每個分區(qū)數(shù)據(jù)的Logic Plan,發(fā)送結(jié)果數(shù)據(jù)給Coordinator。Coordinator和Executor之間通過gRPC進行并行通信。

    圖5 查詢引擎ADE的架構(gòu)設(shè)計

    3.1 面向向量的執(zhí)行計劃

    圖6 向量在執(zhí)行計劃Operator之間傳輸

    傳統(tǒng)的基于行存儲的查詢引擎,在查詢計劃節(jié)點之間傳遞的是行或者Tuple對象。通過調(diào)用next方法,逐行的處理數(shù)據(jù)。在大數(shù)據(jù)環(huán)境下,函數(shù)調(diào)用上下文切換的時間消耗,不可忽略。而且在OLAP中的聚合運算,往往只需要部分列,Tuple中卻包含了所有的列數(shù)據(jù)。相反,列存儲以向量的方式計算和傳遞數(shù)據(jù),向量數(shù)據(jù)以Record Batch 的格式,在Operator之間傳輸。向量運算和傳遞,充分利用了SIMD指令,快速實現(xiàn)FILTER, COUNT, SUM, MIN 。OLAP典型的計算是復(fù)雜Join、數(shù)據(jù)聚合和數(shù)據(jù)掃描。以如下SQL為例詳細(xì)介紹ADE查詢引擎的工作方式:

    SELECT avg(wholesale_cost), avg(list_price) FROM store_sales

    Operator的Allocator之間有父子關(guān)系,同查詢計劃的父子關(guān)系。父Operator能夠訪問子Operator的Allocator的數(shù)據(jù)。Scan算子選擇四個字段,掃描數(shù)據(jù)封裝在Record Batch中。Filter算子掃描store_sk向量,過濾出store_sk=7的行,記錄在Filter Vector向量中。Filter Vector的格式為4個字節(jié)的向量數(shù)組,結(jié)構(gòu)為(batch_index,row_index)。其中1-2字節(jié)標(biāo)識Batch的Index,3-4字節(jié)標(biāo)識在該Batch中的位置。如(3,68)。Aggregation算子,通過構(gòu)建Hash Table來計算Avg平均值。分為兩個步驟:

    圖7 面向內(nèi)存向量的過濾與聚合運算

    掃描Record Batch中Group By字段(item_sk),Avg字段(list_price、wholesale_cost)使用SIMD指令掃描,Item Vector構(gòu)建新的Record Batch。

    對上述Record Batch掃描字段(item_sk)進行轉(zhuǎn)置成行式數(shù)據(jù),對所有Keys字段計算Hash值并構(gòu)建Hash Vector,進而構(gòu)建Hash Table,在Hash Table中進行Aggregation運算。Hash Table是常用來進行Hash Aggregation/Hash join的數(shù)據(jù)結(jié)構(gòu)。

    3.2 過濾和排序?qū)崿F(xiàn)

    在執(zhí)行過濾和排序操作時,使用一個索引向量,來標(biāo)識符合條件的數(shù)據(jù)行或者使用索引向量順序標(biāo)識向量值的順序。因為一個batch設(shè)計為最多64K條記錄。所以用Int16整數(shù)表示。Batch之內(nèi),使用2字節(jié)的整型0,12,17表示行索引號。標(biāo)識多個Batch數(shù)據(jù),使用4字節(jié)的,區(qū)間索引。0-12表示第一個batch的第12行記錄。

    圖8 FilterVector實現(xiàn)過濾和排序

    執(zhí)行過濾操作時,一次Scan就能過濾出符合條件的記錄,不需要改變原始數(shù)據(jù)得結(jié)構(gòu),只需要構(gòu)建一個索引向量。輸出查詢結(jié)果時,只需要根據(jù)這個FilterVector和字段映射選擇某些字段向量匹配索引輸出即可。

    執(zhí)行排序操作時,使用選擇排序算法或者冒泡排序算法,依次把最大到最小值的索引放在FilterVector中。輸出查詢結(jié)果時,只需要根據(jù)這個FilterVector和字段映射選擇某些字段向量匹配索引輸出即可。

    3.3 Hash關(guān)聯(lián)與Hash 聚合運算

    在實踐中發(fā)現(xiàn),列式存儲格式,不利于進行HashJoin、HashAggregation運算。因為列式存儲對HashTable的插入、查找是低效的。因此,需要在計算之前先轉(zhuǎn)置成行的格式。首先,把GroupBy字段進行轉(zhuǎn)置成行數(shù)據(jù),然后構(gòu)建Hash Table。如圖9所示。

    圖9 數(shù)據(jù)轉(zhuǎn)置和構(gòu)建Hash Table

    3.4 節(jié)點數(shù)據(jù)遷移優(yōu)化

    節(jié)點之間Shuffle數(shù)據(jù)仍然是按照Record Batch封裝,每個Record Batch都開啟一個線程進行數(shù)據(jù)傳輸,而Record Batch過濾后可能僅有很少的數(shù)據(jù),這無疑就增加了上下文交換、任務(wù)調(diào)度、線程資源開銷。為此本文中使用多路復(fù)用技術(shù)、在發(fā)送端重新組裝Record Batch。

    圖10 多路復(fù)用節(jié)點間數(shù)據(jù)傳輸

    如圖10所示,N個RecordBatch最終分配到K個Buckets進行數(shù)據(jù)傳輸,K即集群節(jié)點數(shù)。Filter Vector后的數(shù)據(jù),首選對Key進行Hash,生成Bucket Id,為此,每個RecordBatch生成Bucket Vector。然后,所有遍歷Record Batch,根據(jù)Bucket Vector把數(shù)據(jù)分配到對應(yīng)的Bucket,并根據(jù)記錄數(shù)等參數(shù),每個Bucket數(shù)據(jù)都封裝成多個Record Batch。為每個Bucket啟動一個線程,進行數(shù)據(jù)傳輸。優(yōu)化前節(jié)點間數(shù)據(jù)交換次數(shù)為(K-1)* N,優(yōu)化后為(K-1)* K。

    3.5 動態(tài)估算Batch Size

    Arrow以Batch的方式存儲和傳輸數(shù)據(jù),在內(nèi)存的數(shù)據(jù),往往要比在磁盤上大,因為在磁盤上可以壓縮,而在內(nèi)存中一般不壓縮,因為要支持隨機讀取等操作。Batch是處理數(shù)據(jù)得最小執(zhí)行單元。適當(dāng)?shù)腂atch Size有利于集中計算,提高Operator之間數(shù)據(jù)傳輸效率,減少上下文交換,減少計算任務(wù)調(diào)度次數(shù),提升整體效率。Batch Size過大可能會造成Operation之間數(shù)據(jù)傳輸異常。Batch Size過小會增多上下文交換、增加線程數(shù)量、增大數(shù)據(jù)處理時內(nèi)存overhead消耗。除此之外,批次大小還要考慮數(shù)據(jù)表的寬度、字段數(shù)量、平均字節(jié)數(shù)等因素。

    ADE實現(xiàn)了根據(jù)表寬、字段數(shù)自動調(diào)整Batch Size。一般情況下Batch size在127-4095之間。計算公式為:

    (4)

    其中:bi為第i個字段的固定字節(jié)長度,h為行固定開銷一般為128字節(jié),C為字段數(shù)量。W為表寬的調(diào)整因子,當(dāng)C大于100是為1,當(dāng)C小于100是為2。使用公式(6)把batchsize計算結(jié)果調(diào)整到127-4095的范圍內(nèi)。

    W=2ifC≤100

    1ifC>100

    (5)

    batchsize=min(max(pre_batchsize, 127), 4095)

    (6)

    3.6 RPC數(shù)據(jù)傳輸協(xié)議

    Batch的字段內(nèi)部是連續(xù)的內(nèi)存存儲,字段之間的內(nèi)存區(qū)是不連續(xù)的。在RPC 傳輸時,修改傳輸協(xié)議頭,一次性連續(xù)傳輸所有字段的數(shù)據(jù)。并且增加RPC連接失敗回調(diào)處理方法,發(fā)生傳輸異常時進行重試,而不是簡單的異常斷開連接。

    3.7 數(shù)據(jù)壓縮和優(yōu)化

    使用字典類型進行數(shù)據(jù)編碼和查詢優(yōu)化。例如可以將全國省市字典加載,數(shù)據(jù)中使用Int32類型表示。原來重復(fù)每行記錄需要存儲的省市名稱,現(xiàn)在只需要用一個有限長度的字典向量即可。這樣,可以減少數(shù)據(jù)存儲量,壓縮數(shù)據(jù)。同時,把可變長度字段變?yōu)楣潭ㄩL度Int32類型,提高計算過濾、分組統(tǒng)計效率。如圖11所示。

    圖11 字典類型向量壓縮

    3.8 并行查詢接口

    ADE作為其他大數(shù)據(jù)組件(如Spark)的數(shù)據(jù)源,則JDBC訪問方式會成為瓶頸。因此該平臺設(shè)計了并行查詢接口,如上圖MPP并行計算引擎Spark,如圖12所示。ADE和Spark之間,使用Arrow Flight RPC傳輸數(shù)據(jù),詳細(xì)過程分為三個階段:①發(fā)送SQL語句,ADE開始運行SQL,并生成運行基本數(shù)據(jù),包括數(shù)據(jù)分片、執(zhí)行節(jié)點、各節(jié)點的RPC的Endpoint。②客戶端向ADE發(fā)送doGet命令,請求發(fā)送數(shù)據(jù),同時建立一個監(jiān)聽器,監(jiān)聽ADE發(fā)回的數(shù)據(jù)。ADE建立數(shù)據(jù)發(fā)送通道,不停地把數(shù)據(jù)集push到客戶端。③ADE發(fā)送數(shù)據(jù)完畢,發(fā)送complete指令?;蛘呖蛻舳酥鲃觕ancel 數(shù)據(jù)獲取動作。如圖12所示。

    圖12 并行查詢接口架構(gòu)

    3.9 實驗效果分析

    該項目采用TPC-DS測試工具集,與Hive on Spark、Apache Drill進行對比驗證。Hive on Spark配置為Executor四臺(8 Cores、10G內(nèi)存、500G磁盤);Driver一臺(8 Cores、32G內(nèi)存、500G磁盤)。Drill配置為四臺(8 Cores、4堆內(nèi)存、8G堆外內(nèi)存、500G磁盤)。ADE配置為Coordinator一臺(8 Cores、32G內(nèi)存、500G磁盤),Executor四臺(8 Cores、4堆內(nèi)存、8G堆外內(nèi)存、500G磁盤)。

    TPC-DS測試工具集生成1GB的數(shù)據(jù)量,并對數(shù)據(jù)根據(jù)時間分區(qū)。使用5線程數(shù)據(jù)負(fù)載測試,每個線程均按照隨機順序運行TPC-DS的84個SQL查詢語句(3)TPC-DS有標(biāo)準(zhǔn)的99條SQL語句,該文去除了15個函數(shù)不兼容的SQL語句??傮w耗時對比結(jié)果如表1所示。

    表1 TPC-DS測試數(shù)據(jù)對比

    采集壓測過程中84條SQL的耗時數(shù)據(jù),分別把ADE與Hive、Drill對比,如圖13所示??梢姡诖蠖鄶?shù)SQL語句中,ADE性能大幅提高,比較Hive提升了近300%;比較Drill提升了近70%。在壓測過程中,觀察CPU負(fù)載情況,如圖14所示。可見,在SQL并行運行過程中,Hive的CPU負(fù)載較大波動,CPU利用率低;Drill的CPU負(fù)載相對比較平穩(wěn),CPU利用率高;ADE的CPU負(fù)載最為平穩(wěn),CPU利用率最高。

    (a) Hive on Spark 與 ADE SQL耗時對比

    (b) Apache Drill 與 ADE SQL耗時對比

    (a) Hive on Spark的CPU利用率

    (b) Apache Drill的CPU利用率

    (c) ADE的CPU利用率

    4 結(jié)語

    本文介紹了一種基于Arrow技術(shù)設(shè)計和實現(xiàn)的一種內(nèi)存列存儲查詢引擎ADE,詳細(xì)介紹了SQL查詢中向量計算、內(nèi)存使用的方法,并描述了其中的關(guān)鍵技術(shù)及優(yōu)化策略,包括:過濾排序、節(jié)點數(shù)據(jù)Shuffle、Hash聚合運算、Hash Join、Batch Size估算、并行查詢接口等。經(jīng)與Hive on Spark、Apache Drill的驗證對比說明ADE在面向OLAP場景的數(shù)據(jù)源聯(lián)合查詢中有效提高了查詢性能。

    進一步的展望,可以著重在SQL的兼容性和預(yù)計算技術(shù)兩個方面。ADE的SQL兼容性應(yīng)符合ANSI SQL-99標(biāo)準(zhǔn),并支持大多數(shù)的函數(shù)運算。ADE結(jié)合預(yù)計算和SQL重寫技術(shù),進一步提高常規(guī)查詢的性能。

    猜你喜歡
    引擎
    以學(xué)促干 挺膺擔(dān)當(dāng) 激活砥礪前行的紅色引擎
    江陰市“三個創(chuàng)新”打造?;钒踩O(jiān)管新引擎
    新海珠,新引擎,新活力!
    消費繼續(xù)發(fā)揮經(jīng)濟增長第一引擎作用
    三生 三大引擎齊發(fā)力
    藍(lán)谷: “涉藍(lán)”新引擎
    商周刊(2017年22期)2017-11-09 05:08:31
    休閑垂釣 傳統(tǒng)漁業(yè)新引擎
    信息化,“盛京”加速的新引擎
    無形的引擎
    河南電力(2015年5期)2015-06-08 06:01:46
    基于Cocos2d引擎的PuzzleGame開發(fā)
    日本三级黄在线观看| 美女国产视频在线观看| 一级毛片电影观看| 国内精品宾馆在线| 午夜久久久久精精品| 国产成人一区二区在线| 日韩人妻高清精品专区| 亚洲欧洲日产国产| 在线 av 中文字幕| 成人综合一区亚洲| 成年女人看的毛片在线观看| 久久久久久久久久黄片| 18禁裸乳无遮挡免费网站照片| 久久久久久久大尺度免费视频| 欧美高清成人免费视频www| 两个人的视频大全免费| 亚洲精品色激情综合| 好男人视频免费观看在线| 蜜桃亚洲精品一区二区三区| 国产午夜精品论理片| 亚洲激情五月婷婷啪啪| 丰满乱子伦码专区| 人妻少妇偷人精品九色| 欧美一级a爱片免费观看看| 在线a可以看的网站| 久久久久精品久久久久真实原创| 卡戴珊不雅视频在线播放| 又爽又黄无遮挡网站| 免费av观看视频| 纵有疾风起免费观看全集完整版 | 亚洲精品影视一区二区三区av| 女人被狂操c到高潮| 午夜免费男女啪啪视频观看| 日日啪夜夜撸| 一级二级三级毛片免费看| 最近2019中文字幕mv第一页| 欧美变态另类bdsm刘玥| 精品亚洲乱码少妇综合久久| 成人高潮视频无遮挡免费网站| 亚洲精品视频女| 有码 亚洲区| 久久久色成人| 可以在线观看毛片的网站| 成年女人看的毛片在线观看| 亚洲内射少妇av| 大香蕉97超碰在线| 一级毛片aaaaaa免费看小| 国产午夜福利久久久久久| 亚洲av男天堂| 2021少妇久久久久久久久久久| 老女人水多毛片| 精品不卡国产一区二区三区| 日韩三级伦理在线观看| 久99久视频精品免费| 欧美97在线视频| 天堂中文最新版在线下载 | 国产成人精品婷婷| 老司机影院成人| 亚洲在线自拍视频| 亚洲av日韩在线播放| 国产欧美另类精品又又久久亚洲欧美| 亚洲精品日本国产第一区| 真实男女啪啪啪动态图| 在线天堂最新版资源| 亚洲av男天堂| 午夜爱爱视频在线播放| 亚洲av中文字字幕乱码综合| 亚洲真实伦在线观看| 狂野欧美激情性xxxx在线观看| 国产精品美女特级片免费视频播放器| 天堂av国产一区二区熟女人妻| 国产女主播在线喷水免费视频网站 | 久久久久性生活片| 亚洲在久久综合| 国产一区二区三区av在线| 久久综合国产亚洲精品| 欧美极品一区二区三区四区| 免费av不卡在线播放| 国产伦精品一区二区三区视频9| 一个人观看的视频www高清免费观看| 亚洲精品国产av蜜桃| 黄色一级大片看看| 色综合亚洲欧美另类图片| 亚洲国产最新在线播放| 国产日韩欧美在线精品| 国产精品一区二区性色av| 少妇的逼好多水| 人妻少妇偷人精品九色| 欧美日本视频| 男人舔女人下体高潮全视频| 一级毛片我不卡| 老师上课跳d突然被开到最大视频| 大陆偷拍与自拍| 国产 亚洲一区二区三区 | 午夜老司机福利剧场| 又爽又黄a免费视频| 免费观看av网站的网址| 亚洲自偷自拍三级| 国产乱来视频区| 91狼人影院| 亚洲国产精品sss在线观看| 69人妻影院| 久久久久久久国产电影| 一个人看的www免费观看视频| 九九久久精品国产亚洲av麻豆| 一区二区三区免费毛片| 联通29元200g的流量卡| 自拍偷自拍亚洲精品老妇| 亚洲av一区综合| 亚洲av电影不卡..在线观看| 亚洲国产高清在线一区二区三| 亚洲18禁久久av| 最近的中文字幕免费完整| 国产精品人妻久久久久久| 国产午夜福利久久久久久| 日本午夜av视频| 欧美日韩视频高清一区二区三区二| 午夜免费激情av| 日韩视频在线欧美| 国产午夜精品久久久久久一区二区三区| 亚洲av一区综合| 欧美成人午夜免费资源| 美女脱内裤让男人舔精品视频| 爱豆传媒免费全集在线观看| 天堂俺去俺来也www色官网 | 日本av手机在线免费观看| 高清毛片免费看| 插逼视频在线观看| 淫秽高清视频在线观看| 国产91av在线免费观看| 三级国产精品欧美在线观看| 国产黄色小视频在线观看| 99热这里只有精品一区| 亚洲av日韩在线播放| or卡值多少钱| av黄色大香蕉| 亚洲av国产av综合av卡| 欧美成人一区二区免费高清观看| 亚洲av成人精品一区久久| av网站免费在线观看视频 | 精品国内亚洲2022精品成人| 亚洲激情五月婷婷啪啪| videossex国产| 欧美一级a爱片免费观看看| 久久久午夜欧美精品| 天美传媒精品一区二区| 十八禁国产超污无遮挡网站| 国产亚洲5aaaaa淫片| 91在线精品国自产拍蜜月| 亚洲图色成人| 久久精品人妻少妇| 国产成人a∨麻豆精品| 一级爰片在线观看| 国产精品国产三级专区第一集| 国产黄片视频在线免费观看| 国产日韩欧美在线精品| 美女主播在线视频| 午夜老司机福利剧场| 99久久精品一区二区三区| 亚洲欧美精品专区久久| 婷婷色综合www| a级一级毛片免费在线观看| 国产真实伦视频高清在线观看| 在线观看免费高清a一片| 男女那种视频在线观看| 中文欧美无线码| 欧美xxxx黑人xx丫x性爽| 一级毛片aaaaaa免费看小| 深夜a级毛片| 久久久久九九精品影院| 国产伦在线观看视频一区| 少妇丰满av| 好男人在线观看高清免费视频| 亚洲国产日韩欧美精品在线观看| 高清日韩中文字幕在线| 在线播放无遮挡| 97人妻精品一区二区三区麻豆| 最近手机中文字幕大全| 亚洲性久久影院| 国产精品av视频在线免费观看| 亚洲精品日本国产第一区| 内射极品少妇av片p| 国产精品久久久久久精品电影| 国产精品美女特级片免费视频播放器| 亚洲欧美日韩东京热| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 亚洲av电影不卡..在线观看| 91午夜精品亚洲一区二区三区| 69人妻影院| 国产成人精品一,二区| 婷婷色麻豆天堂久久| 久久97久久精品| 夜夜爽夜夜爽视频| 日本wwww免费看| 人妻少妇偷人精品九色| 免费无遮挡裸体视频| 亚洲熟妇中文字幕五十中出| 麻豆av噜噜一区二区三区| 人体艺术视频欧美日本| 免费观看性生交大片5| 午夜精品一区二区三区免费看| 亚洲精品,欧美精品| 亚洲精品影视一区二区三区av| 国产激情偷乱视频一区二区| 最近最新中文字幕免费大全7| 日韩一区二区三区影片| 国产有黄有色有爽视频| 观看美女的网站| 老女人水多毛片| 91aial.com中文字幕在线观看| 午夜老司机福利剧场| 日韩在线高清观看一区二区三区| 最近最新中文字幕免费大全7| 国产精品一二三区在线看| 99视频精品全部免费 在线| 亚洲精品国产成人久久av| 高清毛片免费看| 亚洲精品视频女| 亚洲国产最新在线播放| www.av在线官网国产| 国产成人福利小说| 高清在线视频一区二区三区| 国产 一区精品| 禁无遮挡网站| 精品酒店卫生间| 国产黄a三级三级三级人| 成年av动漫网址| 国内少妇人妻偷人精品xxx网站| av在线播放精品| 成年女人在线观看亚洲视频 | 午夜福利在线观看吧| 国产亚洲精品av在线| 亚洲av.av天堂| 国产精品一二三区在线看| 肉色欧美久久久久久久蜜桃 | 欧美成人精品欧美一级黄| 大话2 男鬼变身卡| 午夜福利在线观看吧| 亚洲国产日韩欧美精品在线观看| 日韩av免费高清视频| 国产久久久一区二区三区| 亚洲激情五月婷婷啪啪| 国产片特级美女逼逼视频| www.av在线官网国产| 久久久久久久午夜电影| 别揉我奶头 嗯啊视频| 蜜臀久久99精品久久宅男| 99久久精品国产国产毛片| 人妻制服诱惑在线中文字幕| 国产精品爽爽va在线观看网站| 亚洲精品一区蜜桃| 久久国产乱子免费精品| 少妇人妻精品综合一区二区| 国产免费福利视频在线观看| 久久久久九九精品影院| av福利片在线观看| 日本免费a在线| 成人综合一区亚洲| 久久久久久伊人网av| 天堂俺去俺来也www色官网 | 春色校园在线视频观看| 成人高潮视频无遮挡免费网站| 久久久久久国产a免费观看| 日韩欧美国产在线观看| 热99在线观看视频| 久久草成人影院| 永久免费av网站大全| 免费观看无遮挡的男女| 国产午夜精品论理片| 国产黄a三级三级三级人| av黄色大香蕉| 九九久久精品国产亚洲av麻豆| 欧美3d第一页| 日韩精品青青久久久久久| 国产亚洲av嫩草精品影院| 国产精品.久久久| 欧美性猛交╳xxx乱大交人| 成人美女网站在线观看视频| 亚洲av男天堂| 色尼玛亚洲综合影院| 日本与韩国留学比较| 久久久久网色| 九九在线视频观看精品| 性插视频无遮挡在线免费观看| 亚洲国产日韩欧美精品在线观看| 国产精品爽爽va在线观看网站| 欧美97在线视频| 亚洲av男天堂| 又爽又黄a免费视频| av国产免费在线观看| 日韩 亚洲 欧美在线| 免费观看在线日韩| 男插女下体视频免费在线播放| 人妻制服诱惑在线中文字幕| 久久99热这里只频精品6学生| 国产又色又爽无遮挡免| 色综合站精品国产| 国产免费又黄又爽又色| av又黄又爽大尺度在线免费看| 久久久久久久国产电影| 国产一区二区在线观看日韩| 又爽又黄无遮挡网站| 日韩精品青青久久久久久| 在线 av 中文字幕| 两个人的视频大全免费| 国产片特级美女逼逼视频| 国产有黄有色有爽视频| 亚洲综合精品二区| 色网站视频免费| 91在线精品国自产拍蜜月| 久久亚洲国产成人精品v| 麻豆国产97在线/欧美| 乱码一卡2卡4卡精品| 久久精品国产自在天天线| 欧美3d第一页| 久久国产乱子免费精品| 国产v大片淫在线免费观看| 免费看a级黄色片| 三级毛片av免费| 三级国产精品欧美在线观看| 国产片特级美女逼逼视频| 亚洲国产高清在线一区二区三| 天天躁日日操中文字幕| 亚洲色图av天堂| 国产高清有码在线观看视频| 黄色一级大片看看| 在线观看免费高清a一片| 日本熟妇午夜| 亚洲aⅴ乱码一区二区在线播放| 搞女人的毛片| 99九九线精品视频在线观看视频| 亚洲性久久影院| 舔av片在线| 国产午夜精品一二区理论片| 国产精品日韩av在线免费观看| 亚洲在线观看片| av免费在线看不卡| 国产亚洲av片在线观看秒播厂 | 免费看av在线观看网站| 国产黄频视频在线观看| 成年免费大片在线观看| 91aial.com中文字幕在线观看| 国产精品国产三级国产专区5o| 日日啪夜夜爽| 91av网一区二区| 女人被狂操c到高潮| 自拍偷自拍亚洲精品老妇| 久久久久性生活片| 亚洲欧美精品专区久久| 超碰97精品在线观看| 亚洲精品视频女| 国产黄色视频一区二区在线观看| 国产永久视频网站| 成人性生交大片免费视频hd| 国内少妇人妻偷人精品xxx网站| 亚洲国产精品成人久久小说| 天天躁夜夜躁狠狠久久av| 国产片特级美女逼逼视频| 身体一侧抽搐| 男人爽女人下面视频在线观看| 国产精品一区二区性色av| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 夜夜爽夜夜爽视频| 精品久久国产蜜桃| 亚洲在线自拍视频| 有码 亚洲区| 成人欧美大片| 一级毛片电影观看| 91狼人影院| 在线观看美女被高潮喷水网站| 日韩成人伦理影院| 免费观看性生交大片5| 日韩,欧美,国产一区二区三区| 在线观看美女被高潮喷水网站| 欧美+日韩+精品| 一个人免费在线观看电影| 国产成人一区二区在线| 两个人视频免费观看高清| 内射极品少妇av片p| 亚洲精品久久午夜乱码| 黄色配什么色好看| av卡一久久| 久久久久久久久久人人人人人人| 亚洲精品国产av成人精品| 精品熟女少妇av免费看| 精品人妻熟女av久视频| freevideosex欧美| 久热久热在线精品观看| 久久久久精品久久久久真实原创| 天堂影院成人在线观看| 中文精品一卡2卡3卡4更新| 精品国内亚洲2022精品成人| 亚洲最大成人av| 亚洲欧美成人精品一区二区| 久久精品久久精品一区二区三区| 黄色日韩在线| 亚洲精品国产av成人精品| 天堂中文最新版在线下载 | 久热久热在线精品观看| 国产伦精品一区二区三区视频9| 久久精品国产鲁丝片午夜精品| 国产伦精品一区二区三区视频9| 精品久久久久久久久久久久久| 丰满人妻一区二区三区视频av| 国产亚洲av片在线观看秒播厂 | 直男gayav资源| 国产成人91sexporn| av在线老鸭窝| 国国产精品蜜臀av免费| 中文资源天堂在线| 亚洲国产精品成人综合色| 三级男女做爰猛烈吃奶摸视频| 亚洲国产最新在线播放| 成人毛片60女人毛片免费| 成人av在线播放网站| 亚洲av国产av综合av卡| 如何舔出高潮| 亚洲av男天堂| 国产欧美日韩精品一区二区| 激情 狠狠 欧美| 日韩成人伦理影院| 午夜福利视频精品| 国产成人精品久久久久久| 中文乱码字字幕精品一区二区三区 | 91久久精品国产一区二区成人| h日本视频在线播放| 美女内射精品一级片tv| 欧美三级亚洲精品| 少妇人妻精品综合一区二区| 精华霜和精华液先用哪个| 亚洲图色成人| 国产av不卡久久| 午夜视频国产福利| 99九九线精品视频在线观看视频| 欧美不卡视频在线免费观看| 91久久精品国产一区二区成人| 最近中文字幕2019免费版| 午夜福利视频1000在线观看| 日韩av在线免费看完整版不卡| a级毛色黄片| 少妇被粗大猛烈的视频| av在线老鸭窝| 亚洲最大成人av| 天天一区二区日本电影三级| 亚洲婷婷狠狠爱综合网| 寂寞人妻少妇视频99o| 少妇人妻精品综合一区二区| 精品久久久久久久久亚洲| 亚洲不卡免费看| 亚洲自偷自拍三级| 欧美日本视频| 性插视频无遮挡在线免费观看| 天堂中文最新版在线下载 | 熟妇人妻不卡中文字幕| 丰满人妻一区二区三区视频av| 欧美潮喷喷水| 欧美一区二区亚洲| 国产精品.久久久| 久久国内精品自在自线图片| 中文字幕av成人在线电影| 婷婷色av中文字幕| 国产精品一及| 18+在线观看网站| 国产黄色小视频在线观看| .国产精品久久| 中文乱码字字幕精品一区二区三区 | 免费观看的影片在线观看| 男女边摸边吃奶| 免费看av在线观看网站| 高清日韩中文字幕在线| 亚洲人成网站在线观看播放| 日日干狠狠操夜夜爽| av福利片在线观看| 国产精品美女特级片免费视频播放器| 精华霜和精华液先用哪个| 乱码一卡2卡4卡精品| 欧美另类一区| 伦理电影大哥的女人| 日本欧美国产在线视频| 国产精品国产三级专区第一集| 狠狠精品人妻久久久久久综合| 一级毛片 在线播放| 亚洲丝袜综合中文字幕| 青青草视频在线视频观看| 人人妻人人澡人人爽人人夜夜 | 插逼视频在线观看| 久久人人爽人人片av| 3wmmmm亚洲av在线观看| 国产色婷婷99| 欧美性猛交╳xxx乱大交人| 亚洲av二区三区四区| 一本一本综合久久| 国产真实伦视频高清在线观看| 天堂影院成人在线观看| 狂野欧美激情性xxxx在线观看| 欧美不卡视频在线免费观看| 久久久久精品性色| 婷婷色综合大香蕉| 夜夜爽夜夜爽视频| 嫩草影院新地址| 欧美日韩综合久久久久久| 亚洲成人久久爱视频| 少妇人妻一区二区三区视频| 国产大屁股一区二区在线视频| 97在线视频观看| 99久久九九国产精品国产免费| 毛片女人毛片| 深夜a级毛片| 十八禁国产超污无遮挡网站| 美女xxoo啪啪120秒动态图| 色网站视频免费| 三级毛片av免费| 久久精品夜夜夜夜夜久久蜜豆| 国产精品麻豆人妻色哟哟久久 | 国产精品1区2区在线观看.| 能在线免费观看的黄片| 精品久久久久久久久亚洲| 国产免费又黄又爽又色| 最近中文字幕高清免费大全6| 国产熟女欧美一区二区| 色视频www国产| 色吧在线观看| 高清视频免费观看一区二区 | 亚洲激情五月婷婷啪啪| av线在线观看网站| 国国产精品蜜臀av免费| 黄色日韩在线| 一级黄片播放器| 亚洲伊人久久精品综合| 少妇的逼水好多| 美女内射精品一级片tv| 午夜福利在线在线| 亚洲国产精品国产精品| 中国国产av一级| 国产精品1区2区在线观看.| 最近的中文字幕免费完整| 国产伦精品一区二区三区视频9| 午夜视频国产福利| videossex国产| 蜜臀久久99精品久久宅男| 极品少妇高潮喷水抽搐| or卡值多少钱| 一级毛片黄色毛片免费观看视频| 亚洲一区高清亚洲精品| 亚洲自偷自拍三级| 久久久久国产网址| 久久久久网色| 国内揄拍国产精品人妻在线| 可以在线观看毛片的网站| 成人午夜高清在线视频| 国产永久视频网站| 久久久久久久久久久丰满| or卡值多少钱| 亚洲国产高清在线一区二区三| 成人二区视频| 精品午夜福利在线看| 看免费成人av毛片| 熟女人妻精品中文字幕| 九九久久精品国产亚洲av麻豆| 久久久欧美国产精品| 免费观看性生交大片5| 亚洲精品aⅴ在线观看| 国产精品蜜桃在线观看| 国产av不卡久久| 免费无遮挡裸体视频| 99热6这里只有精品| 亚洲av.av天堂| 熟妇人妻久久中文字幕3abv| 亚洲av免费高清在线观看| 黄片wwwwww| 亚洲人成网站在线观看播放| 18禁裸乳无遮挡免费网站照片| 欧美日韩在线观看h| 国产探花在线观看一区二区| 欧美成人a在线观看| 亚洲精品视频女| 免费黄频网站在线观看国产| 久久精品久久精品一区二区三区| 国产永久视频网站| 日韩欧美国产在线观看| 日本av手机在线免费观看| 国产精品综合久久久久久久免费| 色尼玛亚洲综合影院| 国产精品女同一区二区软件| 欧美xxⅹ黑人| 欧美成人午夜免费资源| 亚洲av电影在线观看一区二区三区 | 亚洲av国产av综合av卡| 男女那种视频在线观看| 免费观看无遮挡的男女| 2022亚洲国产成人精品| 真实男女啪啪啪动态图| 69av精品久久久久久| 日韩av不卡免费在线播放| 国产亚洲av片在线观看秒播厂 | 国产亚洲精品av在线| 一本一本综合久久| 草草在线视频免费看| 人妻一区二区av| 五月天丁香电影| 九九久久精品国产亚洲av麻豆| 国产伦一二天堂av在线观看| 国产精品久久久久久精品电影小说 | 夫妻性生交免费视频一级片| 国产69精品久久久久777片| 国产成人福利小说| 人体艺术视频欧美日本| 晚上一个人看的免费电影| 国产亚洲午夜精品一区二区久久 | 一级毛片 在线播放| 日本熟妇午夜| 久久人人爽人人片av| 欧美精品国产亚洲| 久久久久久久久久人人人人人人| 国产一级毛片在线|