跳轉到主要內容
工程的博客

介紹Apache火花™3.1

分享這篇文章

我們興奮地宣布的可用性Apache 3.1火花磚的一部分磚8.0運行時。我們想要感謝Apache火花™社區所有的火花3.1發布有價值的貢獻。

繼續目標,使火花更快、更簡單、更聰明,火花3.1擴展其範圍具有以下特點:

  • Python的可用性
  • ANSI SQL合規
  • 查詢優化改進
  • 隨機散列連接的改進
  • 曆史服務器支持結構化流

在這篇文章中,我們總結的一些高級特性和改進。留意即將到來的帖子,深入研究這些特性。主要功能的綜合列表所有組件和火花jira解決,請參閱Apache引發3.1.1發布說明

項目禪

項目禪開始在這個版本改善PySpark在這三個方麵的可用性:

  • 被預言的
  • 在PySpark更好、更容易的可用性
  • 更好的與其他Python庫的互操作性

作為這個項目的一部分,這個版本包含了許多改善PySpark——從利用Python類型提示新設計PySpark文檔,如這篇文章所示

  • Python類型支持在PySpark開始了作為一個第三方庫,pyspark-stubs,已經成為一個成熟和穩定的圖書館。在本版本中,PySpark正式與很多好處包括Python類型提示(火星- 32681)。Python類型提示可以在ide和最有用的筆記本通過允許用戶和開發者利用無縫自動完成,包括最近補充道自動完成磚筆記本電腦的支持。此外,IDE開發人員可以提高他們的生產力,靜態類型和錯誤檢測從Python類型提示。
  • 依賴關係管理支持在PySpark完成和記錄指導PySpark用戶和開發人員(火星- 33824)。此前,PySpark不完全依賴管理的支持,隻有在紗,無證工作。在本版本中,包管理係統如Conda virtualenv和PEX,可以工作在任何類型的集群利用——檔案選項(火星- 33530,火星- 33615)。這篇文章在PySpark Python依賴關係管理已經貢獻了回PySpark文檔並通過。
  • PyPI用戶新安裝選項介紹了(火星- 32017)。pip是安裝PySpark最常見的一種方法。然而,先前版本隻允許Hadoop在PyPI 2,但允許其他選項,比如Hadoop 2和3,其他渠道發布的Apache火花。在本版本中,作為項目禪宗的一部分,所有的選項也可用PyPI用戶。這使他們從PyPI安裝並運行他們的應用程序在任何類型的現有火花集群。
  • 新文檔PySpark介紹了版本(火星- 31851)。PySpark文檔很難導航和隻包含API參考。的文檔在這個發行版中是完全重新設計,細粒度的分類和發展方向最明確的層次結構(火星- 32188)。有一個更好的人類可讀的文本格式的文檔字符串numpydoc樣式(火星- 32085),並有很多有用的頁麵,比如如何調試(火星- 32186),如何貢獻和測試(火星- 32190,火星- 31851和現場的筆記本()和快速入門火星- 32182)。

ANSI SQL合規

該版本增加了額外的ANSI SQL合規改進,這有助於簡化工作負載從傳統的數據倉庫係統遷移到火花。

  • ANSI方言模式引入了自火花3.0的發布和增強。ANSI的行為模式結合ANSI SQL風格的ANSI SQL的如果不嚴格。在這個版本中,當輸入無效(火星- 33275)把更多的運營商/功能運行時錯誤而不是返回NULL。更嚴格的檢查顯式類型鑄造(SQL參考醫生也是這個版本的一部分。當查詢包含非法類型鑄造(例如,日期/時間戳類型是把數字類型)編譯時錯誤拋出通知用戶的無效的轉換。ANSI方言模式仍在積極開發因此它默認是禁用的,但可以通過設置啟用spark.sql.ansi.enabled為true。我們預計它將在即將到來的穩定版本。
  • 各種新的SQL特性被添加在此版本中。廣泛使用的標準CHAR、VARCHAR支持的數據類型作為變量添加字符串類型。更多的內置函數(例如,width_bucket (火星- 21117)和regexp_extract_all (火星- 24884)補充道。當前許多內置運營商/功能已經達到了350年。更多的DDL和DML /實用程序命令已經增強,包括插入(火星- 32976),合並(火星- 32030),解釋(火星- 32337)。從這個版本開始,在火花WebUI,SQL的計劃提出了一種更簡單和結構化的格式(即使用解釋格式化)
  • 統一的創建表SQL語法在這個版本已經完成。火花維護兩套語法創建表。當聲明包含使用和存儲為條款,火花使用默認的蜂巢文件格式。當spark.sql.legacy.createHiveTableByDefault被設置為false(默認是什麼真正的在火花3.1版本,但是在磚運行8.0版本),默認的表格格式取決於spark.sql.sources.default(默認為拚花在火花3.1版本,但是δ在磚運行時的8.0發行版)。這意味著從現在磚三角洲湖表8.0運行時的默認格式,將會帶來更好的性能和可靠性。下麵是一個例子來演示創建表的SQL語法,當用戶的行為變化不顯式地指定使用或存儲為條款。
創建表1 (col1int);
創建表二(col1int)分區通過(partColint);

下麵是更改摘要表的格式的表1和表二

火花3.0 (DBR 7)或之前 火花3.1 * DBR 8.0
默認的格式 蜂巢文本Serde 拚花 δ

請注意,spark.sql.legacy.createHiveTableByDefault需要手動設置在Apache的火花;否則,它仍將文本Serde蜂巢。

性能

催化劑的查詢編譯器優化最火花的應用程序。在磚,每天數十億的查詢進行了優化並執行。這個版本提高了查詢優化和加速查詢處理。

  • 謂詞下推是一種最有效的性能特性,因為它可以大大降低掃描和處理的數據量。各種增強在火花3.1:完成
    • 通過重寫過濾器謂詞和聯接條件連接正常的形式,更多的謂詞有資格被下推到metastore和數據源。
    • 減少分區掃描、分區謂詞下推的蜂巢metastore進一步提高支持數據類型的日期,和更多的運營商包括包含開頭,結尾,不等。
    • 使更多謂詞下推,我們添加了一個新的優化器規則打開投在二進製數值數據類型的比較操作(火星- 32858火星- 24994)。
    • JSON和Avro數據源(火星- 32346)支持謂詞下推,獸人數據源支持謂詞下推為嵌套的字段。
    • 過濾器還可以推動運營商擴大(火星- 33302)。
  • 除洗牌,子表達式消除嵌套域修剪其他三個主要優化功能。作為一個最昂貴的運營商,洗牌可以避免在某些情況下(火星- 31869),火星- 32282,火星- 33399),盡管自適應查詢規劃洗牌切除後可能是不適用的。同時,可以去除重複或不必要的表達式求值(火星- 33092,火星- 33337,火星- 33427,火星- 33540減少計算)。嵌套列修剪可以應用領域各運算符(火星- 29721,火星- 27217,火星- 31736,火星- 32163,火星- 32059)來減少I / O資源的使用,促進後續的優化。
  • Shuffle-Hash加入(SHJ)支持所有連接類型(火星- 32399)與相應codegen執行(火星- 32421從這個版本開始)。與Shuffle-Sort-Merge加入(SMJ), SHJ不需要排序,從而比SMJ CPU和IO效率更高,當加入一個大桌子和一張小桌子太大被播放。注意,SHJ可能導致伯父當構建一邊大,因為建立一個hashmap內存密集型。

流媒體

火花是最好的平台,構建分布式流處理應Beplay体育安卓版本用程序。超過每天10萬億條記錄處理與結構化流磚。這個版本增強其監控、可用性和功能。

  • 更好的調試和監控結構化流媒體應用程序的曆史服務器支持添加(火星- 31953)和現場UI支持進一步加強為狀態(通過添加更多的度量火星- 33223),水印差距(火星- 33224)和更多的國家定製的指標(火星- 33287)。
  • 新的流表api對閱讀和寫作流DataFrame添加一個表,如表api DataFrameReader DataFrameWriter,見這個例子的筆記本。在磚運行時,三角洲表格格式建議僅一次語義和更好的性能。
  • Stream-stream加入添加了兩個新的連接類型支持,包括完整的外(火星- 32862)和左半(火星- 32863在這個版本。Apache火花3.1之前,內心,左外和右外stream-stream加入支持,提出了最初的博客stream-stream連接

3.1其他更新的火花

除了這些新功能,發布關注可用性、穩定性、和細化,解決約1500票。貢獻的結果從超過200個參與者,包括個人和公司,如磚,穀歌,蘋果,Linkedin,微軟、英特爾、IBM、阿裏巴巴、Facebook、英偉達,Netflix, Adobe和許多更多。我們已經強調了一些關鍵的SQL, Python和流媒體的進步引發對於這個博客,但是還有許多其他的功能在這個3.1裏程碑不在這裏。學習更多的發布說明火花和發現所有其他的改進,包括火花在Kubernetes ga,節點退役,狀態模式驗證,火花文件和更多的搜索功能。

其他特色火花貢獻者包括:

火花3.1的發布代表的集體工作工作到1500年的150多名研究者+門票跨越一係列關鍵的改進和新功能。

今天開始使用火花3.1

注冊一個免費磚試驗的帳戶嚐試Apache 3.1和8.0磚運行時的火花

如果你想嚐試Apache 3.1火花磚8.0運行時,報名參加Community Edition磚或磚免費試用在幾分鍾內開始。使用火花3.1非常簡單,隻需選擇版本“8.0”時啟動集群。

免費試著磚
看到所有工程的博客的帖子
Baidu
map