乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spark 2.0技術(shù)新特性總結(jié)

       看風(fēng)景D人 2016-10-07
      1.Spark 2.0SQL做了哪些改變?
      2.Spark 2.0,DataFrame、Dataset API做了哪些改變?
      3.Structured Streaming APIs是什么?


      在過(guò)去的幾個(gè)月時(shí)間里,我們一直忙于我們所愛(ài)的大數(shù)據(jù)開(kāi)源軟件的下一個(gè)主要版本開(kāi)發(fā)工作:Apache Spark 2.0。Spark 1.0已經(jīng)出現(xiàn)了2年時(shí)間,在此期間,我們聽(tīng)到了贊美以及投訴。Spark 2.0的開(kāi)發(fā)基于我們過(guò)去兩年學(xué)到的:用戶所喜愛(ài)的我們加倍投入;用戶抱怨的我們努力提高。本文將總結(jié)Spark 2.0的三大主題:更容易、更快速、更智能。更深入的介紹將會(huì)在后面博客進(jìn)行介紹。

        我們很高興地宣布Apache Spark 2.0技術(shù)預(yù)覽今天就可以在Databricks Community Edition中看到,該預(yù)覽版本是構(gòu)建在branch-2.0基礎(chǔ)上。當(dāng)啟動(dòng)了集群之后,我們可以簡(jiǎn)單地選擇Spark 2.0 (branch preview)來(lái)使用這個(gè)預(yù)覽版,如下所示:



        然而最終版的Apache Spark 2.0發(fā)行將會(huì)在幾個(gè)星期之后,本技術(shù)預(yù)覽版的目的是基于branch-2.0上提供可以訪問(wèn)Spark 2.0功能。通過(guò)這種方式,你可以滿足你的好奇心;而且我們可以在發(fā)行最終版的Spark 2.0之前就可以獲取到用戶的反饋和Bug報(bào)告。
      現(xiàn)在讓我們來(lái)看看Spark 2.0最新的進(jìn)展:





      更容易的SQL和Streamlined APIs
        Spark 2.0主要聚焦于兩個(gè)方面:
      (1)、對(duì)標(biāo)準(zhǔn)的SQL支持
      (2)、統(tǒng)一DataFrame和Dataset API。

        在SQL方面,Spark 2.0已經(jīng)顯著地?cái)U(kuò)大了它的SQL功能,比如引進(jìn)了一個(gè)新的ANSI SQL解析器和對(duì)子查詢的支持。現(xiàn)在Spark 2.0已經(jīng)可以運(yùn)行TPC-DS所有的99個(gè)查詢,這99個(gè)查詢需要SQL 2003的許多特性。因?yàn)镾QL是Spark應(yīng)用程序的主要接口之一,Spark 2.0 SQL的擴(kuò)展大幅減少了應(yīng)用程序往Spark遷移的代價(jià)。

        在編程API方面,我們對(duì)API進(jìn)行了精簡(jiǎn)。
        1、統(tǒng)一Scala和Java中DataFrames和Datasets的API:從Spark 2.0開(kāi)始,DataFrame僅僅是Dataset的一個(gè)別名。有類型的方法(typed methods)(比如:map, filter, groupByKey)和無(wú)類型的方法(untyped methods)(比如:select, groupBy)目前在Dataset類上可用。同樣,新的Dataset接口也在Structured Streaming中使用。因?yàn)榫幾g時(shí)類型安全(compile-time type-safety)在Python和R中并不是語(yǔ)言特性,所以Dataset的概念并不在這些語(yǔ)言中提供相應(yīng)的API。而DataFrame仍然作為這些語(yǔ)言的主要編程抽象。
        2、SparkSession:一個(gè)新的切入點(diǎn),用于替代舊的SQLContext和HiveContext。對(duì)于那些使用DataFrame API的用戶,一個(gè)常見(jiàn)的困惑就是我們正在使用哪個(gè)context?現(xiàn)在我們可以使用SparkSession了,其涵括了SQLContext和HiveContext,僅僅提供一個(gè)切入點(diǎn)。需要注意的是為了向后兼容,舊的SQLContext和HiveContext目前仍然可以使用。
        3、簡(jiǎn)單以及性能更好的Accumulator API:Spark 2.0中設(shè)計(jì)出一種新的Accumulator API,它擁有更加簡(jiǎn)潔的類型層次,而且支持基本類型。為了向后兼容,舊的Accumulator API仍然可以使用。
        4、基于DataFrame的Machine Learning API可以作為主要的ML API了:在Spark 2.0中, spark.ml包以其pipeline API將會(huì)作為主要的機(jī)器學(xué)習(xí)API了,而之前的spark.mllib仍然會(huì)保存,將來(lái)的開(kāi)發(fā)會(huì)聚集在基于DataFrame的API上。
        5、Machine learning pipeline持久化:現(xiàn)在用戶可以保存和加載Spark支持所有語(yǔ)言的Machine learning pipeline和models。
        6、R的分布式算法:在R語(yǔ)言中添加支持了Generalized Linear Models (GLM), Naive Bayes, Survival Regression, and K-Means。


      更快:Spark作為編譯器
        根據(jù)以往的調(diào)查,91%的用戶認(rèn)為Spark的最重要的方面就是性能,結(jié)果性能優(yōu)化在Spark開(kāi)發(fā)中都會(huì)看的比較重。
        Spark 2.0中附帶了第二代Tungsten engine,這一代引擎是建立在現(xiàn)代編譯器和MPP數(shù)據(jù)庫(kù)的想法上,并且把它們應(yīng)用于數(shù)據(jù)的處理過(guò)程中。主要想法是通過(guò)在運(yùn)行期間優(yōu)化那些拖慢整個(gè)查詢的代碼到一個(gè)單獨(dú)的函數(shù)中,消除虛擬函數(shù)的調(diào)用以及利用CPU寄存器來(lái)存放那些中間數(shù)據(jù)。我們把這些技術(shù)稱為"整段代碼生成"(whole-stage code generation)。
        為了有個(gè)直觀的感受,我們記錄下在Spark 1.6和Spark 2.0中在一個(gè)核上處理一行的操作時(shí)間(單位是納秒),下面的表格能夠體現(xiàn)出新的Tungsten engine的威力。

      primitive
      Spark 1.6
      Spark 2.0
      filter
      15ns
      1.1ns
      sum w/o group
      14ns
      0.9ns
      sum w/ group
      79ns
      10.7ns
      hash join
      115ns
      4.0ns
      sort (8-bit entropy)
      620ns
      5.3ns
      sort (64-bit entropy)
      620ns
      40ns
      sort-merge join
      750ns
      700ns

      那么在新的Tungsten engine在端至端的查詢表現(xiàn)又會(huì)咋樣?我們比較了Spark 1.6和Spark 2.0在使用TPC-DS的基本分析,如下圖:



        除了whole-stage code generation可以提高性能,Catalyst方面也做了許多的工作,比如通用查詢優(yōu)化;還有一個(gè)新的矢量Parquet 解碼器,它使得Parquet的掃描吞吐量提高了3x。


      更加智能:Structured Streaming
        Spark Streaming在大數(shù)據(jù)領(lǐng)域第一次嘗試將批處理和流計(jì)算進(jìn)行了統(tǒng)一。在Spark 0.7開(kāi)始引入的第一個(gè)streaming API稱為DStream,它為開(kāi)發(fā)者提供了幾個(gè)強(qiáng)大的特性:僅一次的語(yǔ)義,大規(guī)模容錯(cuò)和高吞吐量。

        然而,隨著數(shù)百個(gè)真實(shí)的Spark Streaming部署后,我們發(fā)現(xiàn),需要實(shí)時(shí)作出決策應(yīng)用通常需要不止一個(gè)流引擎。他們需要深度地將批處理和流處理進(jìn)行整合;需要和外部存儲(chǔ)系統(tǒng)整合;以及需要應(yīng)付業(yè)務(wù)邏輯變化的能力。其結(jié)果是,企業(yè)需要的不僅僅是一個(gè)流引擎;相反,他們需要一個(gè)完整的堆棧,使他們能夠開(kāi)發(fā)終端到終端的“持續(xù)的應(yīng)用程序”。

        一些人認(rèn)為我們可以把所有的東西看作流。也就是說(shuō),提供一個(gè)編程模型,將批處理數(shù)據(jù)和流數(shù)據(jù)進(jìn)行整合。
        這個(gè)單一的模型有幾個(gè)問(wèn)題:首先,當(dāng)數(shù)據(jù)到達(dá)時(shí),對(duì)它進(jìn)行操作將會(huì)變得非常難而且這會(huì)有許多限制性。其次,不同的數(shù)據(jù)分布,不斷變化的業(yè)務(wù)邏輯和數(shù)據(jù)的延遲都增加了獨(dú)特的挑戰(zhàn)。第三、大多數(shù)現(xiàn)有系統(tǒng)中,例如MySQL或Amazon S3中,不表現(xiàn)得像一個(gè)流;而且許多算法在流數(shù)據(jù)上無(wú)法工作。

        Spark 2.0的Structured Streaming APIs是一種新穎的流處理方式。它的實(shí)現(xiàn)源于最簡(jiǎn)單地計(jì)算流數(shù)據(jù)的答案是不要想象它是一個(gè)流(這句話不太好翻譯,自己看英文:the simplest way to compute answers on streams of data is to not having to reason about the fact that it is a stream)。這個(gè)真理來(lái)源于我們的經(jīng)驗(yàn)。結(jié)構(gòu)化數(shù)據(jù)流的愿景是利用Catalyst優(yōu)化器來(lái)發(fā)現(xiàn)什么時(shí)候可以透明的將靜態(tài)的程序轉(zhuǎn)到增量執(zhí)行的動(dòng)態(tài)工作或者無(wú)限數(shù)據(jù)流中。當(dāng)我們從這個(gè)數(shù)據(jù)結(jié)構(gòu)的角度來(lái)看到我們的數(shù)據(jù),這就簡(jiǎn)化了流數(shù)據(jù)。

        作為實(shí)現(xiàn)這一愿景的第一步,Spark 2.0附帶了一個(gè)最初版本的Structured Streaming API(擴(kuò)展自DataFrame/Dataset API),這個(gè)統(tǒng)一對(duì)現(xiàn)有的Spark用戶比較容易適應(yīng),因?yàn)檫@讓他們能夠充分利用Spark batch API知識(shí)來(lái)解決實(shí)時(shí)中的問(wèn)題。這里主要功能將包括支持基于event-time的處理、亂序/延時(shí)數(shù)據(jù)、sessionization以及非流數(shù)據(jù)sources和sinks的緊密集成。

        Streaming顯然是一個(gè)非常寬泛的話題,所以敬請(qǐng)關(guān)注databricks的博客對(duì)于Spark 2.0的Structured Streaming介紹,其中將會(huì)包括那些將會(huì)在此版本實(shí)現(xiàn),哪些將會(huì)在未來(lái)版本實(shí)現(xiàn)。


      總結(jié)
        Spark用戶最初轉(zhuǎn)向Spark的原因是因?yàn)樗囊子眯院托阅堋park 2.0將付出雙倍的努力來(lái)擴(kuò)展它以使得它支持更廣泛的workloads,我們希望你喜歡我們已經(jīng)做的工作,并期待著您的反饋。


        本站是提供個(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)論公約

        類似文章 更多