Spark 2.4重磅發佈:優化深度學習框架集成,提供更靈活的流式接收器

  AI 前線導讀:Apache Spark 2.4.0 是 2.x 系列中的第五個版本。此版本增加了屏障執行模式,以便更好地與深度學習框架集成;引入 30 多個更高階的內置函數,能夠更輕鬆地處理複雜數據類型;優化 K8s 集成,同時提供 Scala 2.12 實驗性支持。其他主要更新還包括內置 Avro 數據源、圖像數據源,更加靈活的流式接收器,取消傳輸過程中 2GB 塊大小的限制,Pandas UDF 改進。此外,此版本繼續關注可用性、穩定性,並解決了大約 1100 個 tickets。

  更多優質內容請關注微信公衆號“AI 前線”(ID:ai-front)

  Databricks 正式發佈 Apache Spark 2.4,作爲 Databricks Runtime 5.0 的一部分。

  Release Note 詳情:

  https://spark.apache.org/releases/spark-release-2-4-0.html

  Spark 2.4 繼續以更快、更簡單、更智能爲目標,帶來了以下新特性:

  一種支持屏障模式的調度器,以便與基於 MPI 的程序(比如分佈式深度學習框架)更好地集成;

  引入一些內置的高階函數,讓處理複雜的數據類型(即數組和 map)變得更容易;

  提供對 Scala 2.12 的實驗性支持;

  允許對 notebook 中的 DataFrame 進行及早求值,便於調試和排除故障;

  引入新的 Avro 數據源。

  除了這些新特性外,新版本把重點放在可用性、穩定性和優化上,解決了 1000 個問題。由 Spark 貢獻者帶來的其他特性還包括:

  去掉了 2 GB 塊大小限制;

  Pandas UDF 改進;

  圖像模式數據源;

  Spark SQL 增強功能;

  內置文件源改進;

  Kubernetes 集成增強。

  接下來將簡要介紹一些高級別的特性和改進,在未來幾天,Databrick 將發佈有關這些特性的深度介紹。有關所有 Spark 組件和 JIRA 已解決的主要特性的完整列表,請參閱 Apache Spark 2.4.0 發行說明(https://spark.apache.org/releases/spark-release-2-4-0.html)。

  屏障執行模式

  屏障執行模式是 Hydrogen(https://databricks.com/blog/2018/07/25/bay-area-apache-spark-meetup-summary-databricks-hq.html)的一部分,Hydrogen 是一項 Apache Spark 計劃,旨在將最先進的大數據和 AI 技術結合在一起。它可以將來自 AI 框架的分佈式訓練作業嵌入到 Spark 作業中。他們通常需要探索像 All-Reduce 這種複雜的通信模式,因此需要同時運行所有任務。Spark 當前使用的 MapReduce 模式不滿足這樣的需求。在這種新的執行模式下,Spark 啓動所有訓練任務(例如 MPI 任務),並在任務失敗時重新啓動所有任務。Spark 還爲屏障任務引入了一種新的容錯機制。在執行過程中如果有任何屏障任務失敗,Spark 將中止所有任務並重新啓動該執行階段。

  內置高階函數

  在 Spark 2.4 之前,有兩種典型的解決方案用於直接操作複雜類型(例如數組類型):一個是將嵌套結構展開爲單獨的行,應用一些函數,然後再次創建原先的結構,一個是使用用戶定義函數(UDF)。新的內置函數可以直接操作複雜類型,可以使用匿名 lambda 函數操作複雜的值,類似於 UDF,但具有更好的性能。

  你可以查看一些有關高階和內置函數的示例:https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/142158605138935/3773509768457258/7497868276316206/latest.html。

  內置 Avro 數據源

  Apache Avro 是一種非常流行的數據序列化格式,被廣泛用在 Apache Spark 和 Apache Hadoop 生態系統中,尤其適用於基於 Kafka 的數據管道。從 Apache Spark 2.4 開始,Spark 爲 Avro 數據的讀寫提供內置支持。新的內置 spark-avro 模塊最初來自 Databricks 的開源項目 Avro Data Source for Apache Spark(從現在開始稱爲 spark-avro,https://github.com/databricks/spark-avro)。此外,它還提供了:

  新的函數 from_avro() 和 to_avro(),用於在 DataFrame 中讀寫 Avro 數據,而不僅僅是文件;

  Avro 邏輯類型支持,包括 Decimal、Timestamp 和 Date 類型;

  2 倍的讀取吞吐量提升和 10%的寫入吞吐量改進。

  Scala 2.12 實驗性支持

  從 Spark 2.4 開始,Spark 將支持 Scala 2.12,並使用 Scala 2.11 和 2.12 進行交叉構建,這兩個版本都可以在 Maven 存儲庫和下載頁面中找到。現在,用戶可以使用 Scala 2.12 來編寫 Spark 應用程序。

  Scala 2.12 帶來了與 Java 8 更好的互操作性,Java 8 提供了更好的 lambda 函數序列化。它還帶來了一些用戶期待的新特性和錯誤修復。

  Pandas UDF 改進

  Pandas UDF 最初是在 Spark 2.3.0 中引入的。在新版本中,根據用戶反饋不斷改進 Pandas UDF。

  除了錯誤修復之外,Spark 2.4 還帶來了 2 個新特性:基於 Pandas UDF 定義窗口函數和聚合函數。這些新特性將進一步改善 Pandas UDF 的使用,並在下一版本中繼續改進 Pandas UDF。

  圖像數據源

  社區看到越來越多圖像 / 視頻 / 音頻處理方面的使用場景。在 Spark 中爲這些場景提供內置數據源簡化了用戶將數據導入 ML 訓練方面的工作。在 Spark 2.3 版本中,圖像數據源是通過 ImageSchema.readImages 實現的。Spark 2.4 引入了一個新的 Spark 數據源,可以將目錄中的圖像文件遞歸加載爲 DataFrame。現在加載圖像非常簡單:

  Kubernetes 集成增強

  Spark 2.4 帶來了很多與 Kubernetes 集成的增強特性。首先,新版本支持在 Kubernetes 上運行容器化的 PySpark 和 SparkR 應用程序。Spark 爲用戶提供了 Python 和 R 語言的 Dockerfiles 文件,供用戶構建基礎鏡像或自定義鏡像。其次,提供了客戶端模式。用戶可以在運行在 Kubernetes 集羣中 pod 上或集羣外的客戶端計算機上運行交互式工具(例如 shell 或 notebook)。最後,支持掛載以下類型的 Kubernetes 卷:emptyDir、hostPath 和 persistentVolumeClaim。

  靈活的流式接收器

  很多外部存儲系統已經提供了批次連接器,但並非所有外部存儲系統都有流式接收器(sink)。在新版本中,即使存儲系統不支持流式接收器,仍然可以通過 streamingDF.writeStream.foreachBatch(…) 在每個微批次輸出上使用批次數據寫入器。例如,你可以在 foreachBatch 中使用現有的 Apache Cassandra 連接器直接將流式查詢的輸出寫入 Cassandra。

  同樣,你也可以用它將很多流式 DataFrame 不支持的 DataFrame/Dataset 操作應用在每個微批次輸出上。例如,foreachBatch 可用於避免在寫入多個位置時重新計算流式查詢。

  英文原文:

  https://databricks.com/blog/2018/11/08/introducing-apache-spark-2-4.html

  大連×××去什麼醫院 http://www.lnbohaink.com/

  大連那家醫院看×××看的好 http://www.0411nk.cn/

  大連哪家醫院×××好 http://www.bohai120.com/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章