五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python、流、SQL 有更新!耗時(shí)兩年,Spark 3.0 重磅發(fā)布!

2020-07-15 10:45 作者:圖靈社區(qū)  | 我要投稿


2020 年 6 月 19 日,經(jīng)過(guò)近兩年的開(kāi)發(fā)之后,Apache Spark TM 3.0.0 版本終于面世了。據(jù)官方介紹,此次 Spark 3.0.0 版本更新了 3,400 多個(gè)補(bǔ)丁程序,將使 Python 和 SQL 在功能上更加強(qiáng)大,且易用性也會(huì)更強(qiáng)。

今年剛好是 Spark 開(kāi)源項(xiàng)目成立 10 周年,讓我們一起來(lái)看一下本次更新的亮點(diǎn)吧。


Spark 3.0中最大的新功能:

  • 通過(guò)自適應(yīng)查詢執(zhí)行、動(dòng)態(tài)分區(qū)修剪和其他優(yōu)化,與 Spark 2.4 相比,Spark 3.0 性能提高了 2 倍;

  • 可兼容 ANSI SQL;

  • Pandas API 的重大改進(jìn),包括 Python 類型提示和增加額外的 Pandas UDF;

  • 優(yōu)化了 Python 錯(cuò)誤處理,簡(jiǎn)化了 PySpark 異常;

  • 結(jié)構(gòu)化流媒體的新用戶界面;

  • 調(diào)用R語(yǔ)言 UDF 速度提升最高達(dá)到了 40 倍;

  • 解決了 3400 個(gè) Jira 問(wèn)題,這些問(wèn)題在 Spark 各個(gè)組件的分布情況如下:


Spark開(kāi)源10周年


Spark 誕生于加州大學(xué)伯克利分校的 AMPlab,該實(shí)驗(yàn)室專注于數(shù)據(jù)密集型計(jì)算。AMPlab 的研究人員與大型互聯(lián)網(wǎng)公司合作解決其數(shù)據(jù)和 AI 問(wèn)題,但發(fā)現(xiàn)那些擁有大量且不斷增長(zhǎng)的數(shù)據(jù)量的公司都面臨著同樣的問(wèn)題。于是,該團(tuán)隊(duì)開(kāi)發(fā)了一個(gè)新引擎來(lái)處理這些新興工作量,同時(shí)使開(kāi)發(fā)人員可以更輕松地訪問(wèn)用于處理大數(shù)據(jù)的 API。

之后,由于社區(qū)的出現(xiàn),Spark 擴(kuò)展到了不同的領(lǐng)域,并產(chǎn)生了圍繞流,Python 和 SQL 的新功能,這些模式現(xiàn)在構(gòu)成了 Spark 的一些主要用例。持續(xù)的投入使 Spark 發(fā)展成如今的樣子,成為數(shù)據(jù)處理,數(shù)據(jù)科學(xué),機(jī)器學(xué)習(xí)和數(shù)據(jù)分析工作負(fù)載的事實(shí)引擎。

Apache Spark 3.0 將通過(guò)顯著改善對(duì) SQL 和 Python 的支持以繼續(xù)保持這一趨勢(shì)。


改進(jìn)Spark SQL引擎


Spark SQL 是支持大多數(shù) Spark 應(yīng)用程序的引擎。例如,在 Databricks 上,超過(guò) 90% 的 Spark API 調(diào)用使用 DataFrame,Dataset 和 SQL API 以及由 SQL 優(yōu)化器優(yōu)化的其他庫(kù)。這意味著即使 Python 和 Scala 開(kāi)發(fā)人員也將其大部分工作通過(guò) Spark SQL 引擎來(lái)進(jìn)行完成。在 Spark 3.0 版本中,46% 的補(bǔ)丁于 SQL 有關(guān),這些補(bǔ)丁顯著提高了其性能和 ANSI SQL 兼容性。Spark 3.0 在總運(yùn)行時(shí)間上的性能大約要比 Spark 2.4 好 2 倍。


Spark SQL引擎中的四個(gè)新功能


新的自適應(yīng)查詢執(zhí)行(AQE)框架通過(guò)在運(yùn)行時(shí)生成更好的執(zhí)行計(jì)劃來(lái)提高性能并簡(jiǎn)化調(diào)優(yōu),即使由于缺少/不正確的數(shù)據(jù)統(tǒng)計(jì)信息和錯(cuò)誤估計(jì)的成本而使初始計(jì)劃不理想。由于 Spark 的存儲(chǔ)和計(jì)算是分離的,因此數(shù)據(jù)的到達(dá)可能無(wú)法預(yù)測(cè)。基于以上,Spark 運(yùn)行時(shí)的自適應(yīng)性變得比傳統(tǒng)系統(tǒng)更為重要。故新版本引入了三個(gè)主要的自適應(yīng)優(yōu)化:

  • 動(dòng)態(tài)聚結(jié) shuffle 分區(qū)可簡(jiǎn)化甚至是避免調(diào)整 shuffle 分區(qū)的數(shù)量。用戶可以在開(kāi)始時(shí)設(shè)置相對(duì)較大的 shuffle 分區(qū)數(shù)量,AQE 會(huì)在運(yùn)行時(shí)將相鄰的小分區(qū)合并為較大的分區(qū)。

  • 動(dòng)態(tài)切換連接策略可以在一定程度上避免由于缺少統(tǒng)計(jì)信息或錯(cuò)誤估計(jì)大小而導(dǎo)致執(zhí)行次優(yōu)計(jì)劃的情況。這種自適應(yīng)優(yōu)化可以在運(yùn)行時(shí)自動(dòng)將排序合并連接(sort-merge join)轉(zhuǎn)換成廣播哈希連接(broadcast-hash join),從而進(jìn)一步提高性能。

  • 動(dòng)態(tài)優(yōu)化傾斜(skew)連接是另一個(gè)關(guān)鍵的性能增強(qiáng)。傾斜連接可能會(huì)導(dǎo)致負(fù)載的極度失衡并嚴(yán)重降低性能。在 AQE 從 shuffle 文件統(tǒng)計(jì)信息中檢測(cè)到傾斜連接之后,它可以將傾斜分區(qū)拆分為較小的分區(qū),并將它們與另一邊的相應(yīng)分區(qū)合并。這個(gè)優(yōu)化可以讓傾斜處理并行化,獲得更好的整體性能。


在一個(gè)以 3TB TPC-DS 為基準(zhǔn)的測(cè)試中,與沒(méi)有 AQE 的 Spark 相比,具有 AQE 的 Spark 可以使兩個(gè)查詢的性能提高 1.5 倍以上,而對(duì)另外 37 個(gè)查詢的性能提高 1.1 倍以上。


此外,當(dāng)優(yōu)化器無(wú)法在編譯時(shí)識(shí)別其可以跳過(guò)的分區(qū)時(shí),將使用“動(dòng)態(tài)分區(qū)修剪”功能。這在星型模式中很常見(jiàn)(星型模式由一個(gè)或多個(gè)事實(shí)表組成,這些事實(shí)表引用了任意數(shù)量的維度表)。在這種聯(lián)接操作中,我們可以通過(guò)識(shí)別過(guò)濾維度表而導(dǎo)致的分區(qū)來(lái)修剪聯(lián)接從事實(shí)表中讀取的分區(qū)。在 TPC-DS 基準(zhǔn)測(cè)試中,102 個(gè)查詢中的 60 個(gè)顯示出 2 到 18 倍的顯著加速。

ANSI SQL 的兼容性對(duì)于將工作負(fù)載從其他 SQL 引擎遷移到 Spark SQL 上至關(guān)重要。為了提升兼容性,新版本使用了 Proleptic Gregorian 日歷,用戶可以禁止使用 ANSI SQL 保留關(guān)鍵字作為標(biāo)識(shí)符。同時(shí),新版本針對(duì)數(shù)字類型的操作中引入了運(yùn)行時(shí)溢出檢查,并強(qiáng)制執(zhí)行編譯時(shí)類型檢查。這些新的驗(yàn)證機(jī)制提高了數(shù)據(jù)質(zhì)量。


增強(qiáng)Python API:PySpark和Koalas


現(xiàn)在 Python 是 Spark 上使用最廣泛的語(yǔ)言,因此,它是 Spark 3.0 開(kāi)發(fā)的重點(diǎn)關(guān)注領(lǐng)域。Databricks 上有 68% 的 Notebook 命令是使用 Python 編寫(xiě)的。PySpark 是 Apache Spark Python API,每月在 PyPI(Python 軟件包索引)上的下載量超過(guò) 500 萬(wàn)。


許多 Python 開(kāi)發(fā)人員使用 pandas API 進(jìn)行數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析,但僅限于單節(jié)點(diǎn)處理。Databricks 表示將繼續(xù)開(kāi)發(fā) Koalas(一種基于 Apache Spark 的 pandas API 的實(shí)現(xiàn)),以使數(shù)據(jù)科學(xué)家在分布式環(huán)境中處理大數(shù)據(jù)時(shí)更加高效。Koalas 消除了在 PySpark 中構(gòu)建許多功能(例如,繪圖支持)的需要,可以讓數(shù)據(jù)科學(xué)家在整個(gè)集群中獲得更高的性能。

經(jīng)過(guò)一年多的開(kāi)發(fā),Koalas 實(shí)現(xiàn)了將近 80% 的 Pandas API。Koalas 在 PyPI 上的月下載量已迅速增長(zhǎng)到 85 萬(wàn),并以每?jī)芍馨l(fā)布一次的節(jié)奏快速演進(jìn)。除了 Koalas,很多人仍在使用 PySpark API,該 API 也越來(lái)越受歡迎。

Spark 3.0對(duì)PySpark API進(jìn)行了增強(qiáng)

  • 帶有類型提示的新 Pandas API:Spark 2.3 中最初引入了 Pandas UDF,用于在 PySpark 中擴(kuò)展用戶定義的功能并將 Pandas API 集成到 PySpark 應(yīng)用程序中。但是,當(dāng)添加更多 UDF 類型時(shí),現(xiàn)有接口很難理解。此版本引入了一個(gè)新的 Pandas UDF 接口,該接口利用 Python 類型提示來(lái)解決 Pandas UDF 類型泛濫的問(wèn)題。新界面變得更具 Python 風(fēng)格和自我描述性。

  • 新的 Pandas UDF?類型和 Pandas 函數(shù) API:新版本增加了兩種新的 Pandas UDF 類型,即系列迭代器到系列迭代器和多個(gè)系列迭代器到系列迭代器。這對(duì)于數(shù)據(jù)預(yù)取和昂貴的初始化操作來(lái)說(shuō)很有用。此外,新版本還添加了兩個(gè)新的 Pandas 函數(shù) API,即 map 和 co-grouped map。

  • 更好的錯(cuò)誤處理:PySpark 錯(cuò)誤處理并不總是對(duì) Python 用戶友好。此版本簡(jiǎn)化了 PySpark 異常,隱藏了不必要的 JVM 堆棧跟蹤,并使它們更具 Python 風(fēng)格。

在 Spark 中改善對(duì) Python 的支持和可用性仍然是我們的首要任務(wù)之一。


Hydrogen,流和可擴(kuò)展性


Spark 3.0 完成了 Project Hydrogen 的關(guān)鍵組件,并引入了新功能來(lái)改善流傳輸和可擴(kuò)展性。

  • 加速器感知調(diào)度:Hydrogen 項(xiàng)目是 Spark 的一項(xiàng)主要計(jì)劃,旨在更好地統(tǒng)一 Spark 上的深度學(xué)習(xí)和數(shù)據(jù)處理。GPU 和其他加速器已被廣泛用于加速深度學(xué)習(xí)工作負(fù)載。為了使 Spark 能夠利用目標(biāo)平臺(tái)上的硬件加速器,新版本增強(qiáng)了現(xiàn)有調(diào)度程序,使群集管理器可以感知加速器。用戶可以通過(guò)配置(點(diǎn)擊獲取配置地址)來(lái)指定加速器,然后調(diào)用新的 RDD API 來(lái)利用這些加速器。

  • 結(jié)構(gòu)化流的新 UI:結(jié)構(gòu)化流最初是在 Spark 2.0 中引入的。在 Databricks 的使用量同比增長(zhǎng) 4 倍之后,每天有超過(guò) 5 萬(wàn)億條記錄通過(guò)結(jié)構(gòu)化流在 Databricks 上處理。此版本添加了專用的新 Spark UI,用于檢查這些流作業(yè)。這個(gè)新的UI提供了兩組統(tǒng)計(jì)信息:1、已完成的流查詢作業(yè)的聚合信息;2、關(guān)于流查詢的詳細(xì)統(tǒng)計(jì)信息。

  • 可觀察的指標(biāo):持續(xù)監(jiān)視數(shù)據(jù)質(zhì)量的變化是管理數(shù)據(jù)管道的一項(xiàng)非常重要的功能。新版本引入了對(duì)批處理和流應(yīng)用程序的監(jiān)視功能??捎^察的指標(biāo)是可以在查詢(DataFrame)上定義的任意聚合函數(shù)。一旦 DataFrame 的執(zhí)行到達(dá)完成點(diǎn)(例如,完成批查詢或到達(dá)流傳輸時(shí)代),就會(huì)發(fā)出一個(gè)命名事件,其中包含自上一個(gè)完成點(diǎn)以來(lái)處理的數(shù)據(jù)的度量。

  • 新的目錄插件 API:現(xiàn)有的數(shù)據(jù)源 API 缺乏訪問(wèn)和操縱外部數(shù)據(jù)源的元數(shù)據(jù)的能力。新版本豐富了數(shù)據(jù)源 V2 API,并引入了新的目錄插件 API。對(duì)于同時(shí)實(shí)現(xiàn)目錄插件 API 和數(shù)據(jù)源 V2 API 的外部數(shù)據(jù)源,在注冊(cè)了相應(yīng)的外部目錄之后,用戶可以通過(guò)多部分標(biāo)識(shí)符直接操作外部表的數(shù)據(jù)和元數(shù)據(jù)。

Spark 3.0中的其他更新


Spark 3.0 是社區(qū)的主要發(fā)行版,已解決 3,400 多個(gè) Jira 問(wèn)題。這是 440 多個(gè)貢獻(xiàn)者共同努力的結(jié)果,這些貢獻(xiàn)者包括個(gè)人以及Databricks,Google,Microsoft,Intel,IBM,Alibaba,F(xiàn)acebook,Nvidia,Netflix,Adobe 等公司。除了本文重點(diǎn)介紹的 Spark 在 SQL,Python 和流技術(shù)方面的一些關(guān)鍵改進(jìn),Spark 3.0 還有很多其他改進(jìn)功能,詳情可以查閱版本發(fā)行說(shuō)明。發(fā)行文檔中提供了更多信息,包括數(shù)據(jù)源、生態(tài)系統(tǒng)、監(jiān)控等。


圖書(shū)推薦:


由 Spark 開(kāi)發(fā)者及核心成員共同打造,講解了網(wǎng)絡(luò)大數(shù)據(jù)時(shí)代應(yīng)運(yùn)而生的、能高效迅捷地分析處理數(shù)據(jù)的工具——Spark,它帶領(lǐng)讀者快速掌握用 Spark 收集、計(jì)算、簡(jiǎn)化和保存海量數(shù)據(jù)的方法,學(xué)會(huì)交互、迭代和增量式分析,解決分區(qū)、數(shù)據(jù)本地化和自定義序列化等問(wèn)題。



本書(shū)是使用 Spark 進(jìn)行大規(guī)模數(shù)據(jù)分析的實(shí)戰(zhàn)寶典,由知名數(shù)據(jù)科學(xué)家撰寫(xiě)。本書(shū)在第 1 版的基礎(chǔ)上,針對(duì) Spark 近年來(lái)的發(fā)展,對(duì)樣例代碼和所使用的資料進(jìn)行了大量更新。新版 Spark 使用了全新的核心 API,MLlib 和 Spark SQL 兩個(gè)子項(xiàng)目也發(fā)生了較大變化,本書(shū)為關(guān)注 Spark 發(fā)展趨勢(shì)的讀者提供了與時(shí)俱進(jìn)的資料,例如 Dataset 和 DataFrame 的使用,以及與 DataFrame API 高度集成的 Spark ML API。

Python、流、SQL 有更新!耗時(shí)兩年,Spark 3.0 重磅發(fā)布!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
湘乡市| 彭水| 宜良县| 文化| 麻城市| 宣威市| 林西县| 霍邱县| 大洼县| 兴和县| 城口县| 垦利县| 梅州市| 揭东县| 铜鼓县| 荥经县| 伊宁市| 大足县| 民县| 满洲里市| 巴彦淖尔市| 麻城市| 西安市| 淮滨县| 曲沃县| 岑巩县| 张家港市| 绍兴市| 遂昌县| 阿拉善左旗| 衢州市| 额尔古纳市| 清水河县| 合江县| 佛学| 即墨市| 万荣县| 罗定市| 突泉县| 交城县| 临漳县|