Apache Spark 2.3.0 是 2.x 系列的第四个版本。此版本在结构化流式处理中增加了持续处理支持,以及全新的 Kubernetes 调度器后端。其他主要更新包括新的 DataSource 和 Structured Streaming v2 API,以及多项 PySpark 性能增强。此外,此版本继续关注可用性、稳定性和完善性,同时解决了大约 1400 个问题。
要下载 Apache Spark 2.3.0,请访问下载页面。您可以查阅 JIRA 以获取详细更改。我们在此处整理了一份高级别更改列表,按主要模块分组。
spark.sql.orc.impl
设置为native
。64KB
JVM 字节码限制和 Java 编译器常量池限制INSERT OVERWRITE DIRECTORY
以直接从查询写入数据到文件系统2.10
的支持0.8.0
,Netty 升级到4.1.17
编程指南:Spark RDD 编程指南和Spark SQL、DataFrames 和 Datasets 指南。
编程指南:结构化流编程指南。
ClusteringEvaluator
用于调优聚类算法,支持余弦轮廓系数和欧几里得平方轮廓系数指标 (Scala/Java/Python)FeatureHasher
转换器 (Scala/Java/Python)OneHotEncoderEstimator
(Scala/Java/Python)QuantileDiscretizer
(Scala/Java)Bucketizer
(Scala/Java/Python)CrossValidator
和 TrainValidationSplit
可以在拟合时收集所有模型 (Scala/Java)。这允许您检查或保存所有已拟合的模型。CrossValidator
、TrainValidationSplit
、OneVsRest
支持并行参数,用于在并行 Spark 作业中拟合多个子模型GBTClassifier
和 GBTRegressor
添加了 featureSubsetStrategy
参数。使用此参数对特征进行二次采样可以显著提高训练速度;此选项一直是 xgboost
的一个关键优势。Word2Vec
学习率随迭代次数缩放的问题。新的学习率已设置为与原始 Word2Vec
C 代码匹配,应能提供更好的训练结果。JSON
支持(这修复了在使用系数边界时 LogisticRegressionModel
的 ML 持久化 bug。)Bucketizer.transform
错误地丢弃了包含 NaN
的行。当参数 handleInvalid
设置为“skip”时,如果另一个(不相关的)列具有 NaN
值,Bucketizer
将丢弃输入列中具有有效值的行。handleInvalid
设置为“error”时,Catalyst 优化器有时会导致 StringIndexerModel
抛出不正确的“Unseen label”异常。这可能发生在过滤后的数据上,由于谓词下推,即使无效行已从输入数据集中过滤掉,也会导致错误。CrossValidator
的内存消耗TrainValidationSplit
的内存消耗Imputer
应该在一次数据遍历中进行训练OnlineLDAOptimizer
避免为每个 mini-batch 将统计数据收集到驱动器。编程指南:机器学习库 (MLlib) 指南。
SparkR 在 2.3.0 版本发布中的主要重点是提高 UDF 的稳定性,并在现有 API 周围添加了几个新的 SparkR 包装器
withWatermark
、trigger
、partitionBy
和流-流连接编程指南:SparkR (R on Spark)。
StackOverflowErrors
编程指南:GraphX 编程指南。
SQLContext
和 Catalog
中 UDF 的 register*
方法OneHotEncoder
已被弃用,并将在 3.0 版本中移除。它已被新的 OneHotEncoderEstimator
取代。请注意,OneHotEncoderEstimator
将在 3.0 版本中重命名为 OneHotEncoder
(但 OneHotEncoderEstimator
将保留作为别名)。NULL
)elt()
返回二进制输出。否则,它返回字符串。在先前版本中,无论输入类型如何,它总是返回字符串。functions.concat()
返回二进制输出。否则,它返回字符串。在先前版本中,无论输入类型如何,它总是返回字符串。double
类型和 date
类型的公共类型推断为 double
类型。现在它为这种冲突找到了正确的公共类型。有关详细信息,请参阅迁移指南。percentile_approx
函数以前接受 numeric
类型输入并输出 double
类型结果。现在它支持 date
类型、timestamp
类型和 numeric
类型作为输入类型。结果类型也更改为与输入类型相同,这对于百分位数来说更合理。_corrupt_record
)时,不允许从原始 JSON/CSV 文件进行查询。相反,您可以缓存或保存解析结果,然后发送相同的查询。na.fill()
或 fillna
也接受布尔值并用布尔值替换 null。在先前的 Spark 版本中,PySpark 只是忽略它并返回原始 Dataset/DataFrame。toPandas
、从 Pandas DataFrame 创建 createDataFrame
等,需要 Pandas 0.19.2
或更高版本。to_replace
不是字典时,df.replace
不允许省略 value
。以前,value
在其他情况下可以省略,默认值为 None
,这反直觉且容易出错。LogisticRegressionTrainingSummary
强制转换为 BinaryLogisticRegressionTrainingSummary
的用户代码来说,这是一个破坏性更改。用户应改为使用 model.binarySummary
方法。有关更多详细信息,请参阅 [SPARK-17139](请注意,这是一个 @Experimental
API)。这不影响 Python 摘要方法,它在多项式和二元情况下仍能正常工作。BinaryClassificationMetrics.pr()
: 第一个点 (0.0, 1.0) 具有误导性,已被 (0.0, p) 取代,其中精度 p 与最低召回点匹配。RFormula
在没有截距的情况下,在编码字符串项时现在输出参考类别,以匹配原生 R 行为。这可能会改变模型训练的结果。OneVsRest
中使用的默认并行度现在设置为 1(即串行)。在 2.2 及更早版本中,并行度级别设置为 Scala 中的默认线程池大小。这可能会改变性能。0.13.2
。这包括 L-BFGS 强 Wolfe 线搜索中的一个重要错误修复。OptimizeMetadataOnlyQuery
导致的不正确结果最后但同样重要的是,没有以下贡献者的努力,此版本是不可能实现的:ALeksander Eskilson, Adrian Ionescu, Ajay Saini, Ala Luszczak, Albert Jang, Alberto Rodriguez De Lema, Alex Mikhailau, Alexander Istomin, Anderson Osagie, Andrea Zito, Andrew Ash, Andrew Korzhuev, Andrew Ray, Anirudh Ramanathan, Anton Okolnychyi, Arman Yazdani, Armin Braun, Arseniy Tashoyan, Arthur Rand, Atallah Hezbor, Attila Zsolt Piros, Ayush Singh, Bago Amirbekian, Ben Barnard, Bo Meng, Bo Xu, Bogdan Raducanu, Brad Kaiser, Bravo Zhang, Bruce Robbins, Bruce Xu, Bryan Cutler, Burak Yavuz, Carson Wang, Chang Chen, Charles Chen, Cheng Wang, Chenjun Zou, Chenzhao Guo, Chetan Khatri, Chie Hayashida, Chin Han Yu, Chunsheng Ji, Corey Woodfield, Daniel Li, Daniel Van Der Ende, Devaraj K, Dhruve Ashar, Dilip Biswal, Dmitry Parfenchik, Donghui Xu, Dongjoon Hyun, Eren Avsarogullari, Eric Vandenberg, Erik LaBianca, Eyal Farago, Favio Vazquez, Felix Cheung, Feng Liu, Feng Zhu, Fernando Pereira, Fokko Driesprong, Gabor Somogyi, Gene Pang, Gera Shegalov, German Schiavon, Glen Takahashi, Greg Owen, Grzegorz Slowikowski, Guilherme Berger, Guillaume Dardelet, Guo Xiao Long, He Qiao, Henry Robinson, Herman Van Hovell, Hideaki Tanaka, Holden Karau, Huang Tengfei, Huaxin Gao, Hyukjin Kwon, Ilya Matiach, Imran Rashid, Iurii Antykhovych, Ivan Sadikov, Jacek Laskowski, JackYangzg, Jakub Dubovsky, Jakub Nowacki, James Thompson, Jan Vrsovsky, Jane Wang, Jannik Arndt, Jason Taaffe, Jeff Zhang, Jen-Ming Chung, Jia Li, Jia-Xuan Liu, Jin Xing, Jinhua Fu, Jirka Kremser, Joachim Hereth, John Compitello, John Lee, John O’Leary, Jorge Machado, Jose Torres, Joseph K. Bradley, Josh Rosen, Juliusz Sompolski, Kalvin Chau, Kazuaki Ishizaki, Kent Yao, Kento NOZAWA, Kevin Yu, Kirby Linvill, Kohki Nishio, Kousuke Saruta, Kris Mok, Krishna Pandey, Kyle Kelley, Li Jin, Li Yichao, Li Yuanjian, Liang-Chi Hsieh, Lijia Liu, Liu Shaohui, Liu Xian, Liyun Zhang, Louis Lyu, Lubo Zhang, Luca Canali, Maciej Brynski, Maciej Szymkiewicz, Madhukara Phatak, Mahmut CAVDAR, Marcelo Vanzin, Marco Gaido, Marcos P, Marcos P. Sanchez, Mark Petruska, Maryann Xue, Masha Basmanova, Miao Wang, Michael Allman, Michael Armbrust, Michael Gummelt, Michael Mior, Michael Patterson, Michael Styles, Michal Senkyr, Mikhail Sveshnikov, Min Shen, Ming Jiang, Mingjie Tang, Mridul Muralidharan, Nan Zhu, Nathan Kronenfeld, Neil Alexander McQuarrie, Ngone51, Nicholas Chammas, Nick Pentreath, Ohad Raviv, Oleg Danilov, Onur Satici, PJ Fanning, Parth Gandhi, Patrick Woody, Paul Mackles, Peng Meng, Peng Xiao, Pengcheng Liu, Peter Szalai, Pralabh Kumar, Prashant Sharma, Rekha Joshi, Remis Haroon, Reynold Xin, Reza Safi, Riccardo Corbella, Rishabh Bhardwaj, Robert Kruszewski, Ron Hu, Ruben Berenguel Montoro, Ruben Janssen, Rui Zha, Rui Zhan, Ruifeng Zheng, Russell Spitzer, Ryan Blue, Sahil Takiar, Saisai Shao, Sameer Agarwal, Sandor Murakozi, Sanket Chintapalli, Santiago Saavedra, Sathiya Kumar, Sean Owen, Sergei Lebedev, Sergey Serebryakov, Sergey Zhemzhitsky, Seth Hendrickson, Shane Jarvie, Shashwat Anand, Shintaro Murakami, Shivaram Venkataraman, Shixiong Zhu, Shuangshuang Wang, Sid Murching, Sital Kedia, Soonmok Kwon, Srinivasa Reddy Vundela, Stavros Kontopoulos, Steve Loughran, Steven Rand, Sujith, Sujith Jay Nair, Sumedh Wale, Sunitha Kambhampati, Suresh Thalamati, Susan X. Huynh, Takeshi Yamamuro, Takuya UESHIN, Tathagata Das, Tejas Patil, Teng Peng, Thomas Graves, Tim Van Wassenhove, Travis Hegner, Tristan Stevens, Tucker Beck, Valeriy Avanesov, Vinitha Gankidi, Vinod KC, Wang Gengliang, Wayne Zhang, Weichen Xu, Wenchen Fan, Wieland Hoffmann, Wil Selwood, Wing Yew Poon, Xiang Gao, Xianjin YE, Xianyang Liu, Xiao Li, Xiaochen Ouyang, Xiaofeng Lin, Xiaokai Zhao, Xiayun Sun, Xin Lu, Xin Ren, Xingbo Jiang, Yan Facai (Yan Fa Cai), Yan Kit Li, Yanbo Liang, Yash Sharma, Yinan Li, Yong Tang, Youngbin Kim, Yuanjian Li, Yucai Yu, Yuhai Cen, Yuhao Yang, Yuming Wang, Yuval Itzchakov, Zhan Zhang, Zhang A Peng, Zhaokun Liu, Zheng RuiFeng, Zhenhua Wang, Zuo Tingbing, brandonJY, caneGuy, cxzl25, djvulee, eatoncys, heary-cao, ho3rexqj, lizhaoch, maclockard, neoremind, peay, shaofei007, wangjiaochun, zenglinxi0615