- Spark大數(shù)據(jù)商業(yè)實(shí)戰(zhàn)三部曲:內(nèi)核解密|商業(yè)案例|性能調(diào)優(yōu)
- 王家林
- 742字
- 2019-12-12 17:29:51
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。
- 集成架構(gòu)中型系統(tǒng)
- Internet接入·網(wǎng)絡(luò)安全
- 智能傳感器技術(shù)與應(yīng)用
- R Data Mining
- 并行數(shù)據(jù)挖掘及性能優(yōu)化:關(guān)聯(lián)規(guī)則與數(shù)據(jù)相關(guān)性分析
- 機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)
- 空間傳感器網(wǎng)絡(luò)復(fù)雜區(qū)域智能監(jiān)測(cè)技術(shù)
- 大數(shù)據(jù)平臺(tái)異常檢測(cè)分析系統(tǒng)的若干關(guān)鍵技術(shù)研究
- Visual Basic.NET程序設(shè)計(jì)
- Python:Data Analytics and Visualization
- Learning Cassandra for Administrators
- Hands-On Deep Learning with Go
- PostgreSQL 10 High Performance
- Intel Edison Projects
- 數(shù)據(jù)結(jié)構(gòu)與算法(C++語(yǔ)言版)