亚州天堂爱爱,做爱视频国产全过程在线观看,成人试看30分钟免费视频,女人无遮挡裸交性做爰视频网站

? ? ?

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

導讀:Apache Spark是一個強大的開源處理引擎,最初由Matei Zaharia開發,是他在加州大學伯克利分校的博士論文的一部分。Spark的第一個版本于2012年發布。

Apache Spark是快速、易于使用的框架,允許你解決各種復雜的數據問題,無論是半結構化、結構化、流式,或機器學習、數據科學。它也已經成為大數據方面最大的開源社區之一,擁有來自250多個組織的超過1000個貢獻者,以及遍布全球570多個地方的超過30萬個Spark Meetup社區成員。

在本文中,我們將提供一個了解Apache Spark的切入點。我們將解釋Spark Job和API背后的概念。

作者:托馬茲·卓巴斯(Tomasz Drabas),丹尼·李(Denny Lee)

如需轉載請聯系華章科技

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

01 什么是Apache Spark

Apache Spark是一個開源的、強大的分布式查詢和處理引擎。它提供MapReduce的靈活性和可擴展性,但速度明顯更高:當數據存儲在內存中時,它比Apache Hadoop快100倍,訪問磁盤時高達10倍。

Apache Spark允許用戶讀取、轉換、聚合數據,還可以輕松地訓練和部署復雜的統計模型。JavaScala、Python、R和SQL都可以訪問 Spark API。

Apache Spark可用于構建應用程序,或將其打包成為要部署在集群上的庫,或通過筆記本(notebook)(例如Jupyter、Spark-Notebook、Databricks notebooks和Apache Zeppelin)交互式執行快速的分析。

Apache Spark提供的很多庫會讓那些使用過Python的pandas或R語言的data.frame 或者data.tables的數據分析師、數據科學家或研究人員覺得熟悉。非常重要的一點是,雖然Spark DataFrame會讓pandas或data.frame、data.tables用戶感到熟悉,但是仍有一些差異,所以不要期望過高。具有更多SQL使用背景的用戶也可以用該語言來塑造其數據。

此外,Apache Spark還提供了幾個已經實現并調優過的算法、統計模型和框架:為機器學習提供的MLlib和ML,為圖形處理提供的GraphX和GraphFrames,以及Spark Streaming(DStream和Structured)。Spark允許用戶在同一個應用程序中隨意地組合使用這些庫。

Apache Spark可以方便地在本地筆記本電腦上運行,而且還可以輕松地在獨立模式下通過YARN或Apache Mesos于本地集群或云中進行部署。它可以從不同的數據源讀取和寫入,包括(但不限于)HDFS、Apache Cassandra、Apache HBase和S3:

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

▲資料來源:Apache Spark is the smartphone of Big Data

http://bit.ly/1QsgaNj

02 Spark作業和API

在本節中,我們將簡要介紹Apache Spark作業(job)和API

1. 執行過程

任何Spark應用程序都會分離主節點上的單個驅動進程(可以包含多個作業),然后將執行進程(包含多個任務)分配給多個工作節點,如下圖所示:

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

驅動進程會確定任務進程的數量和組成,這些任務進程是根據為指定作業生成的圖形分配給執行節點的。注意,任何工作節點都可以執行來自多個不同作業的多個任務。

Spark作業與一系列對象依賴相關聯,這些依賴關系是以有向無環圖DAG)的方式組織的,例如從Spark UI生成的以下示例。基于這些,Spark可以優化調度(例如確定所需的任務和工作節點的數量)并執行這些任務。

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

▲有關DAG調度器的更多信息,請參考:

http://bit.ly/29WTiK8

2. 彈性分布式數據集

彈性分布式數據集(簡稱RDD)是不可變Java虛擬機(JVM)對象的分布式集合,Apache Spark就是圍繞著RDD而構建的。我們使用Python時,尤為重要的是要注意Python數據是存儲在這些JVM對象中的。

這些對象允許作業非常快速地執行計算。對RDD的計算依據緩存和存儲在內存中的模式進行:與其他傳統分布式框架(如Apache Hadoop)相比,該模式使得計算速度快了一個數量級。

同時,RDD會給出一些粗粒度的數據轉換(例如map(…)、reduce(…)和filter(…)),保持Hadoop平臺的靈活性和可擴展性,以執行各種各樣的計算。RDD以并行方式應用和記錄數據轉換,從而提高了速度和容錯能力。

通過注冊這些轉換,RDD提供數據沿襲——以圖形形式給出的每個中間步驟的祖先樹。這實際上保護RDD免于數據丟失——如果一個RDD的分區丟失,它仍然具有足夠的信息來重新創建該分區,而不是簡單地依賴復制。

更多數據沿襲信息參見:

http://ibm.co/2ao9B1t

RDD有兩組并行操作:轉換(返回指向新RDD的指針)和動作(在運行計算后向驅動程序返回值)。

請參閱Spark編程指南,獲取最新的轉換和動作列表:

http://spark.apache.org/docs/latest/programming-guide.html#rdd-operations

某種意義上來說,RDD轉換操作是惰性的,因為它們不立即計算其結果。只有動作執行了并且需要將結果返回給驅動程序時,才會計算轉換。該延遲執行會產生更多精細查詢:針對性能進行優化的查詢。

這種優化始于Apache Spark的DAGScheduler——面向階段的調度器,使用如上面截圖中所示的階段進行轉換。由于具有單獨的RDD轉換和動作,DAGScheduler可以在查詢中執行優化,包括能夠避免shuffle數據(最耗費資源的任務)。

有關DAGScheduler和優化(特別是窄或寬依賴關系)的更多信息,有一個很好的參考是《Effective Transformations》第5章:

3. DataFrame

DataFrame像RDD一樣,是分布在集群的節點中的不可變的數據集合。然而,與RDD不同的是,在DataFrame中,數據是以命名列的方式組織的。

如果你熟悉Python的pandas或者R的data.frames,這是一個類似的概念。

DataFrame旨在使大型數據集的處理更加容易。它們允許開發人員對數據結構進行形式化,允許更高級的抽象。在這個意義上來說,DataFrame與關系數據庫中的表類似。DataFrame提供了一個特定領域的語言API來操作分布式數據,使Spark可以被更廣泛的受眾使用,而不只是專門的數據工程師。

DataFrame的一個主要優點是,Spark引擎一開始就構建了一個邏輯執行計劃,而且執行生成的代碼是基于成本優化程序確定的物理計劃。與Java或者Scala相比,Python中的RDD是非常慢的,而DataFrame的引入則使性能在各種語言中都保持穩定。

4. Catalyst優化器

Spark SQL是Apache Spark最具技術性的組件之一,因為它支持SQL查詢和DataFrame API。Spark SQL的核心是Catalyst優化器。優化器基于函數式編程結構,并且旨在實現兩個目的:簡化向Spark SQL添加新的優化技術和特性的條件,并允許外部開發人員擴展優化器(例如,添加數據源特定規則,支持新的數據類型等等):

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

詳細信息,請查看Deep Dive into Spark SQL’s Catalyst Optimizer :

http://bit.ly/271I7Dk

和Apache Spark DataFrames:

Simple and Fast Analysis of Structured Data

http://bit.ly/29QbcOV

6. 鎢絲計劃

Tungsten(鎢絲)是Apache Spark執行引擎項目的代號。該項目的重點是改進Spark算法,使它們更有效地使用內存和CPU,使現代硬件的性能發揮到極致。

該項目的工作重點包括:

  • 顯式管理內存,以消除JVM對象模型和垃圾回收的開銷。
  • 設計利用內存層次結構的算法和數據結構。
  • 在運行時生成代碼,以便應用程序可以利用現代編譯器并優化CPU。
  • 消除虛擬函數調度,以減少多個CPU調用。
  • 利用初級編程(例如,將即時數據加載到CPU寄存器),以加速內存訪問并優化Spark的引擎,以有效地編譯和執行簡單循環。

更多詳細信息,請參考Project Tungsten:

Bringing Apache Spark Closer to Bare Metal

https://databricks.com/blog/2015/04/28/project-tungstenbringing-spark-closer-to-bare-metal.html

Deep Dive into Project Tungsten: Bringing Spark Closer to Bare Metal [SSE 2015 Video and Slides

https://spark-summit.org/2015/events/deep-dive-into-project-tungsten-bringing-spark-closerto-bare-metal/

Apache Spark as a Compiler: Joining a Billion Rows per Second on a Laptop

https://databricks.com/blog/2016/05/23/apache-sparkas-a-compiler-joining-a-billion-rows-per-second-on-alaptop.html

本文摘編自《PySpark實戰指南:利用Python和Spark構建數據密集型應用并規模化部署》,經出版方授權發布。

零基礎入門Apache Spark,一文看懂作業和API(apache spark教程)

延伸閱讀《PySpark實戰指南》

推薦語:Pyspark的實用參考指南,深度挖掘Python Spark的強大功能。

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2023年5月21日 上午9:22
下一篇 2023年5月21日 上午9:38

相關推薦

  • 出貨管理軟件有哪些(出貨管理軟件)

    出貨管理軟件: 提升制造業效率的關鍵 隨著制造業的不斷發展,出貨管理已經成為了許多企業的重要業務之一。出貨管理軟件可以幫助企業更好地管理出貨流程,提高生產效率和產品質量,降低庫存成…

    科研百科 2024年6月3日
    53
  • 科研項目管控力度

    科研項目管控力度的重要性 科研項目是科學技術發展的重要支撐,也是國家經濟發展的重要動力。然而,隨著科技的快速發展,科研項目的管控力度也變得越來越重要。本文將從科研項目的管控力度的重…

    科研百科 2024年12月3日
    1
  • 比較好的施工管理軟件推薦(比較好的施工管理軟件)

    好的施工管理軟件能夠提高施工效率,降低施工成本,提高施工質量,具體可以參考下述優點:1. 實時監測施工進度,提醒施工者及時完成工作,避免因為進度拖延而導致額外的成本支出;2. 提供…

    科研百科 2024年6月6日
    51
  • CRM系統是干什么的?(CRM系統是干什么的)

    點擊輸入圖片描述(最多30字) CRM系統就是我們常說的客戶管理系統。它能幫助企業做到“以客戶為中心”,統一管理客戶、滿足客戶需求、維護客戶關系、優化銷售流程、提升銷售業績等。CR…

    2022年9月15日
    109
  • 建科研工程資料管理軟件2020版,管理預算的障礙

    此外,與增加的當前預測有關的第一項任務必須不得啟動或啟動后必須立即擱置,直到建立障礙評估(必要時進行項目變更評估( PCA))為止。只有這樣,才能啟動或繼續執行此任務。 不啟動或停…

    科研百科 2022年10月23日
    141
  • 開源項目管理軟件jira

    開源項目管理軟件jira:一款功能強大且易于使用的軟件 jira是一款開源項目管理軟件,能夠幫助團隊更好地管理項目進度、代碼審查、協作、文檔管理等等。它是一款功能強大且易于使用的軟…

    科研百科 2024年7月22日
    32
  • 基金會項目管理系統

    基金會項目管理系統 基金會項目管理系統是一種用于管理和監督基金會項目的軟件系統。它可以幫助您有效地組織和管理項目,提高項目效率和質量,降低風險。 基金會項目管理系統的好處如下: 1…

    科研百科 2024年12月31日
    2
  • 深圳集成系統項目管理

    深圳集成系統項目管理 隨著信息技術的不斷發展,集成系統項目管理已經成為了企業項目管理中不可或缺的一部分。深圳作為中國的經濟特區,也擁有著眾多的企業,因此深圳集成系統項目管理對于企業…

    科研百科 2024年12月23日
    1
  • 海亮集團:已實現辦公協同100%數字化(海亮集團協同辦公平臺)

    海亮集團輪值主席何文天在出席某活動時透露,截止今年7月,海亮集團已經實現辦公協同100%數字化。據了解,海亮集團與飛書今年3月開始合作,目前已產出100多個行業標桿案例。“數字化本…

    科研百科 2025年1月14日
    1
  • 今后的科研計劃(未來十年科研項目成果報告)

    未來十年科研項目成果報告 自2000年以來,科研項目一直在不斷推動科學技術的發展。在過去的十年里,許多重要的科研項目取得了巨大的成果,這些成果不僅對于人類的生活質量產生了深遠的影響…

    科研百科 2024年4月2日
    58