小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Ignite集成Spark之IgniteDataFrames

 小牛學(xué)堂666 2018-10-12

Ignite是一個(gè)分布式的內(nèi)存數(shù)據(jù)庫(kù)、緩存和處理平臺(tái),為事務(wù)型、分析型和流式負(fù)載而設(shè)計(jì),在保證擴(kuò)展性的前提下提供了內(nèi)存級(jí)的性能。

Spark是一個(gè)流式數(shù)據(jù)和計(jì)算引擎,通常從HDFS或者其他存儲(chǔ)中獲取數(shù)據(jù),一直以來(lái),他都傾向于OLAP型業(yè)務(wù),并且聚焦于MapReduce類型負(fù)載。

因此,這兩種技術(shù)是可以互補(bǔ)的。

將Ignite與Spark整合

整合這兩種技術(shù)會(huì)為Spark用戶帶來(lái)若干明顯的好處:

通過(guò)避免大量的數(shù)據(jù)移動(dòng),獲得真正可擴(kuò)展的內(nèi)存級(jí)性能;

提高RDD、DataFrame和SQL的性能;

在Spark作業(yè)之間更方便地共享狀態(tài)和數(shù)據(jù)。

下圖中顯示了如何整合這兩種技術(shù),并且標(biāo)注了顯著的優(yōu)勢(shì): 


IgniteDataframes

Spark的DataFrame API為描述數(shù)據(jù)引入了模式的概念,Spark通過(guò)表格的形式進(jìn)行模式的管理和數(shù)據(jù)的組織。

DataFrame是一個(gè)組織為命名列形式的分布式數(shù)據(jù)集,從概念上講,DataFrame等同于關(guān)系數(shù)據(jù)庫(kù)中的表,并允許Spark使用Catalyst查詢優(yōu)化器來(lái)生成高效的查詢執(zhí)行計(jì)劃。而RDD只是跨集群節(jié)點(diǎn)分區(qū)化的元素集合。

Ignite擴(kuò)展了DataFrames,簡(jiǎn)化了開發(fā),改進(jìn)了將Ignite作為Spark的內(nèi)存存儲(chǔ)時(shí)的數(shù)據(jù)訪問(wèn)時(shí)間,好處包括:

通過(guò)Ignite讀寫DataFrames時(shí),可以在Spark作業(yè)之間共享數(shù)據(jù)和狀態(tài);

通過(guò)優(yōu)化Spark的查詢執(zhí)行計(jì)劃加快SparkSQL查詢,這些主要是通過(guò)IgniteSQL引擎的高級(jí)索引以及避免了Ignite和Spark之間的網(wǎng)絡(luò)數(shù)據(jù)移動(dòng)實(shí)現(xiàn)的。

IgniteDataframes示例

下面通過(guò)一些代碼以及搭建幾個(gè)小程序的方式,了解Ignite DataFrames如何使用,如果想實(shí)際運(yùn)行這些代碼,可以從GitHub上下載。

一共會(huì)寫兩個(gè)Java的小應(yīng)用,然后在IDE中運(yùn)行,還會(huì)在這些Java應(yīng)用中執(zhí)行一些SQL。

一個(gè)Java應(yīng)用會(huì)從JSON文件中讀取一些數(shù)據(jù),然后創(chuàng)建一個(gè)存儲(chǔ)于Ignite的DataFrame,這個(gè)JSON文件Ignite的發(fā)行版中已經(jīng)提供,另一個(gè)Java應(yīng)用會(huì)從Ignite的DataFrame中讀取數(shù)據(jù)然后使用SQL進(jìn)行查詢。

下面是寫應(yīng)用的代碼:


在DFWriter中,首先創(chuàng)建了SparkSession,它包含了應(yīng)用名,之后會(huì)使用spark.read().json()讀取JSON文件并且輸出文件內(nèi)容,下一步是將數(shù)據(jù)寫入Ignite存儲(chǔ)。下面是DFReader的代碼:



在DFReader中,初始化和配置與DFWriter相同,這個(gè)應(yīng)用會(huì)執(zhí)行一些過(guò)濾,需求是查找所有的id > 0 以及 < 6的人,然后輸出結(jié)果。

在IDE中,通過(guò)下面的代碼可以啟動(dòng)一個(gè)Ignite節(jié)點(diǎn):



到此,就可以對(duì)代碼進(jìn)行測(cè)試了。

運(yùn)行應(yīng)用

首先在IDE中啟動(dòng)一個(gè)Ignite節(jié)點(diǎn),然后運(yùn)行DFWriter應(yīng)用,輸出如下:


如果將上面的結(jié)果與JSON文件的內(nèi)容進(jìn)行對(duì)比,會(huì)顯示兩者是一致的,這也是期望的結(jié)果。

下一步會(huì)運(yùn)行DFReader,輸出如下:


這也是期望的輸出。

總結(jié)

通過(guò)本文,會(huì)發(fā)現(xiàn)使用Ignite DataFrames是如何簡(jiǎn)單,這樣就可以通過(guò)Ignite DataFrame進(jìn)行數(shù)據(jù)的讀寫了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約