官术网_书友最值得收藏!

2.1 Spark 2.2綜述

Spark 2.0中更新發(fā)布了新的流處理框架(Structured Streaming);對(duì)于API的更新,Spark 2.0版本API的更新主要包括DataFrame、DataSet、SparkSession、累加器API、Aggregator API等API的變動(dòng)。

2.1.1 連續(xù)應(yīng)用程序

自從Spark得到廣泛使用以來(lái),其流處理框架Spark Streaming也逐漸吸引到了很多用戶,得益于其易用的高級(jí)API和一次性語(yǔ)義,使其成為使用最廣泛的流處理框架之一。但是,我們不僅需要流處理來(lái)構(gòu)建實(shí)時(shí)應(yīng)用程序,很多時(shí)候我們的應(yīng)用程序只有一部分需要用到流處理,對(duì)于這種應(yīng)用程序,Databricks公司把它稱為Continuous Application(實(shí)時(shí)響應(yīng)數(shù)據(jù)的端到端的應(yīng)用程序),也就是連續(xù)的應(yīng)用程序。在Continuous Application中有許多難點(diǎn),如數(shù)據(jù)交互的完整性、流數(shù)據(jù)與離線數(shù)據(jù)的結(jié)合使用、在線機(jī)器學(xué)習(xí)等。

Spark 2.0最重磅的更新是新的流處理框架——Structured Streaming。它允許用戶使用DataFrame/DataSetAPI編寫與離線批處理幾乎相同的代碼,便可以作用到流數(shù)據(jù)和靜態(tài)數(shù)據(jù)上,引擎會(huì)自動(dòng)增量化流數(shù)據(jù)計(jì)算,同時(shí)保證了數(shù)據(jù)處理的一致性,并且提供了和存儲(chǔ)系統(tǒng)的事務(wù)集成。

2.1.2 新的API

在Spark 2.0版本的API中,共有如下幾個(gè)API的變動(dòng):

(1)統(tǒng)一了DataFrame和DataSet?,F(xiàn)在DataFrame不再是一個(gè)獨(dú)立的類,而是作為DataSet[Row]的別名定義在org.apache.spark.sql這個(gè)包對(duì)象中。

sql\package.scala源碼如下:

1.    package object sql {
2.
3.   /**
       * 將一個(gè)邏輯計(jì)劃轉(zhuǎn)換為零個(gè)或多個(gè)SparkPlans。這個(gè)API是查詢計(jì)劃實(shí)驗(yàn)使用,不是為
       * Spark   穩(wěn)定發(fā)行版設(shè)計(jì)的。編寫庫(kù)的開(kāi)發(fā)者應(yīng)該考慮使用[[org.apache.spark.sql.
       * sources]]提供的穩(wěn)定APIs
4.     */
5.    @DeveloperApi
6.    @InterfaceStability.Unstable
7.    type Strategy = SparkStrategy
8.
9.    type DataFrame = Dataset[Row]
10. }

(2)加入了SparkSession,用于替換DataFrame和Dataset API的SQLContext和HiveContext(這兩個(gè)API仍然可以使用)。

(3)為SparkSession和SparkSQL加入一個(gè)新的,精簡(jiǎn)的配置參數(shù)——RuntimeConfig,用來(lái)設(shè)置和獲得與SparkSQL有關(guān)的Spark或者Hadoop設(shè)置。

SparkSession.scala源碼:

1.  /**
2.    * Spark運(yùn)行時(shí)的配置接口
      *
3.    *  這是用戶可以獲取并設(shè)置所有Spark和Hadoop的接口。將觸發(fā) Spark SQL相關(guān)的配
      *  置。當(dāng)獲取配置值時(shí),默認(rèn)設(shè)置值在SparkContext里
4.    * @since 2.0.0
5.    */
6.   @transient lazy val conf: RuntimeConfig = new RuntimeConfig
     (sessionState.conf)

(4)更簡(jiǎn)單、更高性能的累加器API。

(5)用于DataSet中類型化聚合的新的改進(jìn)的Aggregator API。

主站蜘蛛池模板: 陆川县| 甘德县| 济源市| 黄山市| 松潘县| 平安县| 九龙城区| 潢川县| 永福县| 名山县| 乌恰县| 长春市| 襄樊市| 新河县| 盘锦市| 乌兰察布市| 杭锦后旗| 苏尼特右旗| 凭祥市| 云林县| 新化县| 江永县| 河西区| 鄂伦春自治旗| 东阿县| 盖州市| 黑山县| 衡阳县| 呼和浩特市| 泾川县| 玉山县| 四子王旗| 英吉沙县| 丽水市| 尚义县| 岳阳市| 麻阳| 渝中区| 林甸县| 江津市| 游戏|