Apache Spark 3.0.0
正式發佈啦,Apache Spark 3.0
是在Spark 2.x
的基礎上開發的,帶來了新的想法和功能。sql
Spark
是一個開源的大數據處理、數據科學、機器學習和數據分析工做負載的統一引擎,自2010年首次發佈以來,已經成長爲最活躍的開源項目之一;支持Java、Scala、Python、R
等語言,併爲這些語言提供了相關的SDK
。shell
Spark 3.0
中的Spark SQL
是這個版本中最活躍的組件,46%
的已解決的問題都是是針對Spark SQL
的,包括結構化流和MLlib
,以及高層API
,包括SQL
和DataFrames
。在通過了大量優化後,Spark 3.0
的性能比Spark 2.4
快了大約2
倍。編程
Python
是目前Spark
上使用最普遍的語言;針對Python
語言提供的PySpark
在PyPI
上的月下載量超過500萬
。在Spark 3.0
中,對PySpark
的功能和可用性作了很多改進,包括用Python
類型提示從新設計pandas UDF API
,新的pandas UDF
類型,以及更多的Pythonic
錯誤處理。緩存
如下即是Spark 3.0
中的功能亮點:包括自適應查詢執行,動態分區修剪,ANSI SQL
合規性,pandas API
的重大改進,結構化流的新UI
,調用R
用戶定義函數的速度提升了40
倍,加速器感知的調度器,以及SQL
參考文檔。性能優化
把這些功能按照模塊來劃分就能夠分爲如下幾個模塊:app
core、Spark SQL、Structured Streaming
MLlib
SparkR
GraphX
Python 2
和R 3.4
如下的版的支持;突出功能機器學習
pandas UDF API
與類型提示;API
的支持;Java 11
;Hadoop 3
;ANSI SQL
;性能提高函數
9
項規則;INSERT
和ALTER TABLE ADD PARTITION
命令中增長批處理;UDAF
;SQL兼容性加強oop
Proleptic Gregorian
日曆;Spark
本身的日期時間模式定義;ANSI
存儲分配策略;ANSI
存儲分配規則;SQLConf
: spark.sql.ansi.enabled
,用於開啓ANSI
模式;ANSI SQL
過濾子句;ANSI SQL OVERLAY
功能;ANSI
嵌套方括號內的註釋;char
和decimal
添加ANSI
類型的別名;SQL
解析器定義了ANSI
兼容的保留關鍵字;ANSI
模式開啓時,禁止使用保留關鍵字做爲標識符;ANSI SQL.LIKE...ESCAPE
語法;ANSI SQL
布爾-謂詞語法;PySpark加強版性能
pandas UDFs
,並提供類型提示;Pandas UDF
採用pd.DataFrames
的迭代器;StructType
做爲Scalar Pandas UDF
的參數和返回類型;Pandas UDFs
支持Dataframe Cogroup
;mapInPandas
,容許DataFrames
的迭代器;SQL
函數也應該取數據列名;PySpark
的SQL
異常更加Pythonic
化;擴展性加強
V2 API
重構;Hive 3.0
和3.1
的版本的元存儲支持;Spark
插件接口擴展到驅動程序;Spark
指標系統;API
;DSV2
的內置源遷移:parquet, ORC, CSV, JSON, Kafka, Text, Avro
;SparkExtensions
中注入函數;鏈接器加強
spark.sql.statistics.fallBackToHdfs
;Apache ORC
到1.5.9
;CSV
數據源的過濾器;Hive
表;Kafka
到2.4.1
;K8s中的原生Spark應用
K8S
進行更靈敏的動態分配,並在K8S
上增長對Spark
的Kerberos
支持;Hadoop
兼容的文件系統支持客戶端依賴性;k8s
後臺增長可配置的認證祕密源;K8s
的子路徑掛載;PySpark Bindings for K8S
中把Python 3
做爲默認選項;Binarizer
、StringIndexer
、StopWordsRemover
和PySpark QuantileDiscretizer
添加了多列支持;MultilabelClassificationEvaluator
和RankingEvaluator
;PowerIterationClustering
的R API
;Spark ML
監聽器;Python
中的梯度提高樹中添加了帶有驗證集的擬合。RobustScaler
變壓器;此外,在Spark 3.0
中,Pyspark
中的多類邏輯迴歸如今將返回LogisticRegressionSummary
,而不是其子類BinaryLogisticRegressionSummary
;pyspark.ml.param.shared.Has* mixins
也再也不提供任何set(self, value)setter
方法,而是使用各自的self.set(self., value)
代替。
經過矢量化的R gapply()
、dapply()
、createDataFrame
、collect()
提升性能來優化SparkR
的互操做性;
還有 "eager execution
"的R shell
,IDE
以及迭代聚類的R API
。
Python 2
的支持;R 3.4
如下版本的支持;Deprecate UserDefinedAggregateFunction
;這次的Spark 3.0
也算是一個大版本,不只帶來了很多新功能、也修復了不少已知的問題,在性能上有了很大的提高。
自從Python
官方宣佈中止維護Python2
以後,各大組件也是紛紛響應,都中止了Python
的支持,各位項目學習Python
的小夥伴也是能夠考慮直接學習Python 3
了。
老夫雖不正經,但老夫一身的才華!關注我,獲取更多編程科技知識。