介紹Apache火花2.4
更新:11/19/2018
我們興奮地宣布的可用性Apache 2.4火花磚的一部分磚5.0運行時。我們想感謝Apache火花社區所有的火花2.4發布有價值的貢獻。
繼續與目標火花更快,更容易,更聰明,火花2.4擴展其範圍具有以下特點:
- 一個調度程序支持障礙模式更好的與mpi程序的集成,例如分布式深度學習框架
- 介紹一些內置的高階函數,讓它更容易處理複雜數據類型(例如。、數組和地圖)
- Scala 2.12提供實驗支持
- 允許DataFrames即時抓取的筆記本,便於調試和故障排除。
- 引入一個新的內置Avro數據源
除了這些新功能,發布關注可用性、穩定性、和細化,解決1000多票。其他特色火花貢獻者包括:
- 消除(2 GB的塊大小限製火星- 24296,火星- 24307]
- 熊貓UDF改進(火星- 22274,火星- 22239,火星- 24624]
- 意象圖式數據源(火花- 22666)
- 火花SQL改進(火星- 23803,火星- 4502,火星- 24035,火星- 24596,火星- 19355]
- 內置的文件源改進[火星- 23456,火星- 24576,火星- 25419,火星- 23972,火星- 19018,火星- 24244]
- Kubernetes集成增強[火星- 23984,火星- 23146]
在這篇文章中,我們簡要總結和改進的一些高級特性,在未來幾天,我們將為這些特性深入發布博客。主要功能的綜合列表所有組件和火花jira解決,讀Apache火花測試盒框發布說明。
障礙執行模式
障礙執行模式的一部分項目氫,這是一個Apache火花倡議將最先進的大數據和人工智能在一起。它使適當的嵌入分布式培訓工作從人工智能框架火花工作。他們通常喜歡探索複雜的通信模式減少,因此所有任務需要同時運行。這並不符合MapReduce的模式目前所使用的火花。使用這種新的執行模式,火花發射訓練任務(例如,MPI的任務)在一起,重啟所有任務的任務失敗。火花也引入了一個新的任務的容錯機製障礙。當任何障礙任務失敗在中間,火花將中止所有任務並重新啟動階段。
內置的高階函數
火花2.4之前,操縱複雜類型(例如數組類型),有兩種典型的解決方案:1)嵌套結構爆炸成單獨的行,並應用一些函數,然後再創建結構。2)建立一個用戶定義的函數(UDF)。新的內置函數可以直接操縱複雜類型,和高階函數可以操縱複雜的值和一個匿名lambda函數,類似於udf但與更好的性能。
你可以閱讀我們的博客高階函數。
內置Avro數據源
Apache Avro是一種流行的數據序列化格式。廣泛用於Apache火花和Apache Hadoop生態係統,特別是對於Kafka-based數據管道。從Apache 2.4版本火花,火花為閱讀和寫作Avro數據提供了內置的支持。新的內置spark-avro模塊來自磚的開源項目Avro數據源為Apache火花(指spark-avro從現在開始)。另外,它還提供了:
- 新功能from_avro ()和to_avro ()讀寫DataFrame Avro數據而不是文件。
- Avro邏輯類型支持,包括十進製、時間戳和日期類型。看到相關的模式轉換獲取詳細信息。
- 2 x讀提高吞吐量和10%寫提高吞吐量。
你可以閱讀更多關於內置Avro數據源中深入的技術博客。
實驗Scala 2.12支持
2.4從火花,火花支持Scala 2.12 cross-built Scala 2.11和2.12,這是在Maven存儲庫和下載頁麵。現在用戶可以編寫火花與Scala 2.12應用程序,通過選擇Scala 2.12引發依賴。
Scala 2.12帶來更好的互操作性與Java 8,提供改善lambda函數的序列化。它還包括新特性和bug修複,用戶的願望。
熊貓UDF改進
熊貓UDF介紹了引發tripwire。在這個版本中,我們收集了來自用戶的反饋,不斷提高熊貓UDF。
除了bug修複,有兩個新特性引發2.4:火星- 22239用戶定義的窗口函數與熊貓UDF。火星- 22274用戶定義的聚合函數與熊貓udf。我們相信這些新功能將進一步提高大熊貓的采用UDF,和下一個版本中我們將繼續改善大熊貓UDF。
圖像數據來源
周圍的社區看到更多的用例圖像/視頻/音頻處理。提供火花內置數據源的簡化用戶的工作獲取數據到毫升培訓。火花2.3版本,通過ImageSchema.readImages實現圖像數據來源。火星- 22666火花的2.4版引入了一個新的火花數據源可以加載映像文件從一個目錄遞歸地DataFrame。現在簡單加載圖片:
df = spark.read。格式(“圖像”).load (“…”)
您可以閱讀更多關於內置的圖像數據在我們的來源深入的技術博客。
Kubernetes集成增強
火花2.4包含了許多增強Kubernetes集成。我們提到三個亮點。首先,這個版本支持運行集裝箱PySpark Kubernetes SparkR應用程序。火花的船隻DockerfilesPython和R綁定為用戶建立一個基礎圖像或定製它構建一個定製的映像。第二,提供了客戶端模式。用戶可以運行交互式工具(例如,殼或筆記本)pod Kubernetes集群中運行或集群外的客戶端機器。最後,安裝Kubernetes卷支持以下類型:emptyDir,hostPath,persistentVolumeClaim。詳情,請參閱技術博客。
靈活的流水槽
許多外部存儲係統已經批連接器,但不是所有的人都流水槽。在本版本中,即使存儲係統不支持流水槽,streamingDF.writeStream.foreachBatch (…)
允許您使用批處理每個microbatch的輸出數據的作家。例如,您可以使用現有的Apache Cassandra連接器內foreachBatch
直接寫的輸出流查詢卡桑德拉。
streamingDF.writeStream.foreachBatch {(batchDF: DataFrame batchId:長)= >batchDF.write/ /使用卡桑德拉批數據源編寫湧出用於.cassandraFormat(表).option (“集群”clusterName).mode (“添加”).save ()}
類似地,您還可以使用它來適用於每個micro-batch輸出很多DataFrame /流DataFrames數據集不支持的操作。例如,foreachBatch
可以用來避免寫作時重新計算流查詢多個位置。例如,
streamingDF.writeStream。foreachBatch {(batchDF: DataFrame batchId:長)= >batchDF.persit ()batchDF.write.format (…) .save (…)/ /位置1batchDF.write.format (…) .save (…)/ /位置2batchDF.unpersist ()}
接下來是什麼
再一次,我們感謝所有引發社會的貢獻!
而這篇文章隻有總結的一些特征在本版本中,你可以閱讀官方的發布說明看到變化的完整列表。請繼續關注我們將出版技術博客解釋這些特性的技術深度。