Apache Spark 2.3.0 は、2.x ラインの4番目のリリースです。このリリースでは、Structured Streaming における継続処理のサポートと、まったく新しい 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 ガイド。
プログラミングガイド: Structured Streaming プログラミングガイド。
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 の学習率が num イテレーションでスケーリングされるのを修正しました。新しい学習率は、元の Word2Vec C コードに一致するように設定されており、トレーニングからより良い結果が得られるはずです。JSON サポートを追加 (これにより、係数に制約がある場合の LogisticRegressionModel による ML永続化のバグが修正されました)。Bucketizer.transform が NaN を含む行を誤ってドロップします。Param handleInvalid が "skip" に設定されている場合、Bucketizer は、別の (無関係な) 列に NaN 値がある場合、入力列に有効な値を持つ行をドロップしていました。handleInvalid が "error" に設定されている場合に StringIndexerModel が誤った "Unseen label" 例外をスローすることがありました。これは、述語プッシュダウンにより、無効な行が入力データセットから既にフィルタリングされた後でもエラーが発生する可能性がありました。CrossValidator のメモリ使用量を削減TrainValidationSplit のメモリ使用量を削減Imputer は、データに対して単一パスでトレーニングする必要があります。OnlineLDAOptimizer は、ミニバッチごとにドライバに統計を収集するのを回避します。プログラミングガイド: 機械学習ライブラリ (MLlib) ガイド。
SparkR における 2.3.0 リリースの主な焦点は、UDF の安定性の向上と、既存の API のいくつかの新しい SparkR ラッパーの追加でした。
withWatermark、trigger、partitionBy、およびストリーム-ストリーム結合の Structured Streaming APIプログラミングガイド: SparkR (R on Spark)。
StackOverflowErrors を回避するために定期的にチェックポイントを行うようになりました。プログラミングガイド: GraphX プログラミングガイド。
SQLContext および Catalog における UDF の register* を非推奨化OneHotEncoder は非推奨になり、3.0 で削除されます。新しい OneHotEncoderEstimator に置き換えられました。3.0 では OneHotEncoderEstimator は 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 以降が必要です。df.replace は、to_replace が辞書でない場合に value を省略できませんでした。以前は、value は他のケースで省略可能であり、デフォルトで None を持っていたため、直感的ではなくエラーが発生しやすかったです。LogisticRegressionTrainingSummary を BinaryLogisticRegressionTrainingSummary にキャストするユーザーコードにとって破壊的な変更です。代わりに model.binarySummary メソッドを使用する必要があります。詳細については、[SPARK-17139] を参照してください (これは @Experimental API です)。これは Python のサマリーメソッドには影響せず、多項および二項の場合の両方で引き続き正しく機能します。BinaryClassificationMetrics.pr(): 最初の点 (0.0, 1.0) は誤解を招くため、リコールが最も低い点に対応する精度 p を持つ (0.0, p) に置き換えられました。RFormula は、ネイティブ R の動作と一致するように、文字列項をエンコードする際に参照カテゴリを出力するようになりました。これにより、モデルトレーニングの結果が変更される可能性があります。OneVsRest で使用されるデフォルトの並列度は、1 (つまりシリアル) に設定されるようになりました。2.2 以前のバージョンでは、並列度は Scala のデフォルトスレッドプールサイズに設定されていました。これによりパフォーマンスが変更される可能性があります。0.13.2 にアップグレードしました。これには、L-BFGS の強いた強いた線検索における重要なバグ修正が含まれていました。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, 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