Spark Release 3.1.1

Apache Spark 3.1.1 は 3.x ラインの2番目のリリースです。このリリースでは、Project Zenの一環としてPythonの型アノテーションとPython依存関係管理のサポートが追加されました。その他の主なアップデートには、ANSI SQL準拠サポートの改善、Structured Streamingにおける履歴サーバーサポート、KubernetesとStandaloneにおけるKubernetesおよびノード廃止の一般提供(GA)が含まれます。さらに、このリリースでは、約1500件のチケットを解決しながら、ユーザビリティ、安定性、および洗練度に引き続き注力しています。

Apache Spark 3.1.1 をダウンロードするには、ダウンロードページをご覧ください。JIRAで詳細な変更点を確認できます。ここでは、主要モジュールごとにグループ化された、ハイレベルな変更点のリストをまとめました。

Core および Spark SQL

ハイライト

ANSI SQL互換性拡張

  • CHAR/VARCHARデータ型サポート (SPARK-33480)
  • ANSIモード: NULLを返すのではなく、実行時エラー (SPARK-33275)
  • ANSIモード: 新しい明示的なキャスト構文ルール (SPARK-33354)
  • SQL標準コマンド SET TIME ZONE を追加 (SPARK-32272)
  • CREATE TABLE SQL構文の統一 (SPARK-31257)
  • 一時ビューと永続ビューの動作を統一 (SPARK-33138)
  • INSERTステートメントでの列リストサポート (SPARK-32976)
  • ANSIネスト括弧コメントサポート (SPARK-28880)

パフォーマンス向上

  • シャッフルサービスなしでのホストローカルシャッフルデータ読み取り (SPARK-32077)
  • Repartitionノード前の冗長なソートの削除 (SPARK-32276)
  • 述語の部分プッシュダウン (SPARK-32302, SPARK-32352)
  • Expand を介したフィルタのプッシュダウン (SPARK-33302)
  • CNF変換を介したJOINでのより多くの述語プッシュダウン (SPARK-31705)
  • ブロードキャストハッシュ結合の出力パーティショニングを保持することによるシャッフルの削除 (SPARK-31869)
  • 結合キーの並べ替えの改善によるシャッフルの削除 (SPARK-32282)
  • 出力パーティショニングとソート順の正規化によるシャッフルの削除 (SPARK-33399)
  • シャッフルハッシュ結合の改善 (SPARK-32461)
    • シャッフルハッシュ結合ビルドサイドパーティショニングの保持 (SPARK-32330)
    • ハッシュ結合(BHJおよびSHJ)ストリームサイド順序の保持 (SPARK-32383)
    • シャッフルハッシュ結合のためのバケットテーブルの結合 (SPARK-32286)
    • シャッフルハッシュ結合のコード生成追加 (SPARK-32421)
    • シャッフルハッシュ結合でのFULL OUTER JOINサポート (SPARK-32399)
  • Whole-stage-codegenにおけるProjectでのサブ式消去サポート (SPARK-33092)
  • 条件式におけるサブ式消去サポート (SPARK-33337)
  • 解釈済み式評価におけるサブ式消去サポート (SPARK-33427)
  • 解釈済み述語におけるサブ式消去サポート (SPARK-33540)
  • その他のオプティマイザールール
    • Rule ExtractSingleColumnNullAwareAntiJoin (SPARK-32290)
    • Rule EliminateNullAwareAntiJoin (SPARK-32573)
    • Rule EliminateAggregateFilter (SPARK-32540)
    • Rule UnwrapCastInBinaryComparison (SPARK-32858)
    • Rule DisableUnnecessaryBucketedScan (SPARK-32859)
    • Rule CoalesceBucketsInJoin (SPARK-31350)
    • Generateにおいて、Projectなしで不要なネストフィールドをプルーニング (SPARK-29721)
    • AggregateとExpandにおいて、不要なネストフィールドをプルーニング (SPARK-27217)
    • Repartition-by-expressionとJoinにおいて、不要なネストフィールドをプルーニング (SPARK-31736)
    • 化粧的なバリエーションでの不要なネストフィールドのプルーニング (SPARK-32163)
    • WindowとSortにおいて、不要なネストフィールドをプルーニング (SPARK-32059)
    • CreateArray/CreateMapのサイズを子要素のサイズに最適化 (SPARK-33544)

拡張性向上

  • ステージレベルリソース設定とスケジューリング (SPARK-27495)
    • ステージレベルスケジューリングのためのRDD API公開 (SPARK-29150)
    • ステージ内でのリソースプロファイルの結合 (SPARK-29153)
    • Kubernetes向けのステージレベルスケジューリングサポート (SPARK-33288)
    • ステージレベルスケジューリングのためのUIサポート追加 (SPARK-29303)
  • シャッフルデータ永続化のためのリモートストレージ (SPARK-25299)
    • シャッフルライターメタデータAPI (SPARK-31798)
  • 外部シャッフルサービスでのカスタムシャッフルマネージャーの使用許可 (SPARK-33037)
  • DataSourceV2でSupportsPartitions APIを追加 (SPARK-31694)
  • DataSourceV2でSupportsMetadataColumns APIを追加 (SPARK-31255)
  • SQLキャッシュシリアライゼーションのプラグイン化 (SPARK-32274)
  • v2カタログのTableCatalog.dropTableに"purge"オプションを導入 (SPARK-33364)

コネクタの強化

  • Hive Metastoreパーティションフィルタプッシュダウンの改善 (SPARK-33537)
    • CONTAINS、STARTS-WITH、ENDS-WITHフィルタのサポート (SPARK-33458)
    • 日付型でのフィルタサポート (SPARK-33477)
    • 等しくないフィルタのサポート (SPARK-33582)
  • Parquet
    • Parquetのマップキー型での複合型サポート (SPARK-32639)
    • ParquetでのINT96の保存/読み込みをリベースなしで許可 (SPARK-33160)
  • ORC
    • ORCでのネストフィールド述語プッシュダウン (SPARK-25557)
    • Apache ORCを1.5.12にアップグレード (SPARK-33050)
  • CSV
    • CSVスキーマ推論でのSQLテキストデータソースの活用 (SPARK-32270)
  • JSON
    • JSONデータソースでのフィルタプッシュダウンサポート (SPARK-30648)
  • JDBC
  • Avro
    • Avroデータソースでのフィルタプッシュダウンサポート (SPARK-32346)

機能強化

  • ノード廃止 (SPARK-20624)
    • 基本フレームワーク (SPARK-20628)
    • 廃止中のRDDブロック移行 (SPARK-20732)
    • 動的スケーリングの一部としての正常な廃止 (SPARK-31198)
    • 廃止中のシャッフルブロック移行 (SPARK-20629)
    • タスクとブロック移行完了後のExecutor終了のみ (SPARK-31197)
    • 廃止中のフォールバックストレージサポート (SPARK-33545)
  • 新しい組み込み関数
  • EXPLAINコマンドの強化 (SPARK-32337, SPARK-31325)
  • ユーザー提供のヒントを無効にするオプション提供 (SPARK-31875)
  • HiveスタイルのREPLACE COLUMNS構文サポート (SPARK-30613)
  • LIKE ANYおよびLIKE ALL演算子のサポート (SPARK-30724)
  • MERGE INTOでの無制限のMATCHEDおよびNOT MATCHEDサポート (SPARK-32030)
  • Fサフィックス付き浮動小数点リテラルのサポート (SPARK-32207)
  • 単一設定をリセットするRESET構文サポート (SPARK-32406)
  • フィルタ式でDISTINCTの同時使用を許可 (SPARK-30276)
  • DSv2でのALTER TABLE ADD/DROP PARTITIONコマンドサポート (SPARK-32512)
  • ネストされたOR条件内のNOT INサブクエリサポート (SPARK-25154)
  • REFRESH FUNCTIONコマンドサポート (SPARK-31999)
  • Datasetに 'sameSemantics' および 'semanticHash' メソッドを追加 (SPARK-30791)
  • UDFでのケースクラスの複合型サポート (SPARK-31826)
  • エンコーダーでの列挙型サポート (SPARK-32585)
  • withFieldおよびdropFieldsネストフィールドAPIサポート (SPARK-31317, SPARK-32511)
  • unionByNameで欠損列のNULLを埋めるサポート (SPARK-29358)
  • DataFrameReader.tableが指定されたオプションを取るサポート (SPARK-32592, SPARK-32844)
  • spark.sql.hive.metastore.jarsでのHDFSロケーションサポート (SPARK-32852)
  • –archivesオプションのネイティブサポート (SPARK-33530, SPARK-33615)
  • ExecutorPlugin APIを、タスク開始および終了イベント用のメソッドを含むように強化 (SPARK-33088)

その他の注目すべき変更点

  • Sparkドキュメントサイトでの検索機能提供 (SPARK-33166)
  • デフォルトでApache Hadoop 3.2.0を使用 (SPARK-32058, SPARK-32841)
  • Apache Arrowを2.0.0にアップグレード (SPARK-33213)
  • Kubernetes GA (SPARK-33005)
    • Kubernetes NFSボリュームマウントのサポート追加 (SPARK-31394)
    • 動的なPVC作成/削除サポート (SPARK-32971, SPARK-32997)
    • Python実行可能ファイル用の環境変数と構成の尊重 (SPARK-33748)
    • Python依存関係サポート (SPARK-27936)
    • Pod割り当てExecutorタイムアウトを設定可能にし、保留中のPodでのスケジューリングを許可 (SPARK-33231, SPARK-33262)
    • ExecutorPodsAllocatorでExecutorアイドルタイムアウト設定を尊重 (SPARK-33099)
    • keytabでのJDBC Kerberosサポート (SPARK-12312)
  • ThriftサーバーでのJava 8時間API有効化 (SPARK-31910)
  • UDFでのJava 8時間API有効化 (SPARK-32154)
  • Decimalでの集計SUMのオーバーフローチェック (SPARK-28067)
  • 動的パーティション上書きモードでのコミット衝突修正 (SPARK-27194, SPARK-29302)
  • slave、blacklist、whitelistへの参照削除 (SPARK-32004, SPARK-32036, SPARK-32037)
  • シャッフルマップステージでのタスク結果サイズチェック削除 (SPARK-32470)
  • ExecutorSourceを一般化して、ユーザー指定のファイルシステムスキームを公開 (SPARK-33476)
  • StorageLevel.DISK_ONLY_3 を追加 (SPARK-32517)
  • ExecutorのExecutorメモリメトリクスをWeb UIで公開 (SPARK-23432)
  • StagesタブのExecutorメモリメトリクスをステージレベルで公開 (SPARK-26341)
  • YARNクラスタモードでのspark.ui.portの明示的な設定修正 (SPARK-29465)
  • Standaloneクラスタモードでのspark-submit終了を制御するspark.submit.waitForCompletion構成を追加 (SPARK-31486)
  • 内蔵Hadoopを持つSparkディストリビューションのHadoopクラスパスの伝播をしない (SPARK-31960)
  • 高負荷時のSHSでのジョブ断続的消失の修正 (SPARK-33841)
  • SHSでのアプリケーションログの機密属性の検閲 (SPARK-33504)
  • yarn.Clientがドライバーstdout/stderrへの直接リンクを表示するように設定 (SPARK-33185)
  • ブロードキャストピースの保存失敗時のメモリリーク修正 (SPARK-32715)
  • BlockManagerMasterドライバーハートビートタイムアウト設定可能化 (SPARK-34278)
  • キャッシュ動作の統一と完了 (SPARK-33507)

動作の変更

各コンポーネントの移行ガイドをお読みください: Spark Core および Spark SQL

プログラミングガイド: Spark RDD Programming Guide および Spark SQL, DataFrames and Datasets Guide

PySpark

Project Zen

  • Project Zen: Pythonユーザビリティの向上 (SPARK-32082)
  • PySpark型ヒントサポート (SPARK-32681)
  • PySparkドキュメントの再設計 (SPARK-31851)
  • NumPyドキュメントスタイルへの移行 (SPARK-32085)
  • PyPIユーザー向けのインストールオプション (SPARK-32017)
  • DataFrameスキーマを辞書のリストから推論する非推奨解除 (SPARK-32686)
  • Python UDFからの例外メッセージの簡略化 (SPARK-33407)

その他の注目すべき変更点

  • ステージレベルスケジューリングAPI (SPARK-29641)
  • 決定論的PythonUDF呼び出しの重複排除 (SPARK-33303)
  • PySpark関数での高階関数サポート (SPARK-30681)
  • データソースv2x書き込みAPIサポート (SPARK-29157)
  • PySpark関数でのpercentile_approxサポート (SPARK-30569)
  • PySpark DataFrameでのinputFilesサポート (SPARK-31763)
  • PySpark ColumnでのwithFieldサポート (SPARK-32835)
  • PySpark ColumnでのdropFieldsサポート (SPARK-32511)
  • PySpark関数でのnth_valueサポート (SPARK-33020)
  • acosh, asinh, atanhサポート (SPARK-33563)
  • PySpark SparkContextでのgetCheckpointDirメソッドサポート (SPARK-33017)
  • unionByNameで欠損列のNULLを埋めるサポート (SPARK-32798)
  • cloudpickleをv1.5.0に更新 (SPARK-32094)
  • ArrowとのMapTypeサポート追加 (SPARK-24554)
  • DataStreamReader.table および DataStreamWriter.toTable (SPARK-33836)

動作の変更

PySparkの移行ガイドをお読みください: PySpark

プログラミングガイド: PySpark Getting Started および PySpark User Guide

Structured Streaming

パフォーマンス向上

  • maxFilesPerTriggerを超えて取得したファイルのリストを未読ファイルとしてキャッシュ (SPARK-30866)
  • ファイルストリームソースとシンクメタデータログのロジックの合理化 (SPARK-30462)
  • クエリがコンパクトバッチから再開した場合、コンパクトメタデータログの重複読み取りを回避 (SPARK-30900)

機能強化

  • DataStreamReader.table API追加 (SPARK-32885)
  • DataStreamWriter.toTable API追加 (SPARK-32896)
  • Left semi stream-stream join (SPARK-32862)
  • Full outer stream-stream join (SPARK-32863)
  • 出力ファイルに保持期間を設定する新しいオプション提供 (SPARK-27188)
  • Spark Structured Streaming履歴サーバーサポート追加 (SPARK-31953)
  • クエリ再開時の状態スキーマ検証導入 (SPARK-27237)

その他の注目すべき変更点

  • ストリーミング状態ストアのスキーマ検証導入 (SPARK-31894)
  • 状態ストアでの異なる圧縮コーデック使用サポート (SPARK-33263)
  • Kafkaコネクタでのメタデータが更新されないための無限待機 (SPARK-28367)
  • Kafkaを2.6.0にアップグレード (SPARK-32568)
  • Structured Streaming UIページでのページネーションサポート (SPARK-31642, SPARK-30119)
  • Structured Streaming UIでの状態情報 (SPARK-33223)
  • Structured Streaming UIでのウォーターマークギャップ情報 (SPARK-33224)
  • SS UIでの状態カスタムメトリクス情報公開 (SPARK-33287)
  • ウォーターマークより遅い行数に関する新しいメトリクス追加 (SPARK-24634)

動作の変更

Structured Streamingの移行ガイドをお読みください: Structured Streaming

プログラミングガイド: Structured Streaming Programming Guide

MLlib

ハイライト

  • LinearSVC入力ベクトルブロック化 (SPARK-30642)
  • LogisticRegression入力ベクトルブロック化 (SPARK-30659)
  • LinearRegression入力ベクトルブロック化 (SPARK-30660)
  • AFT入力ベクトルブロック化 (SPARK-31656)
  • MLでのアソシエーションルールサポート追加 (SPARK-19939)
  • LinearSVCModelのトレーニングサマリー追加 (SPARK-20249)
  • RandomForestClassificationModelへのサマリー追加 (SPARK-23631)
  • FMClassificationModelへのトレーニングサマリー追加 (SPARK-32140)
  • MultilayerPerceptronClassificationModelへのサマリー追加 (SPARK-32449)
  • SparkRへのFMClassifier追加 (SPARK-30820)
  • SparkR LinearRegressionラッパー追加 (SPARK-30818)
  • SparkRへのFMRegressorラッパー追加 (SPARK-30819)
  • SparkR vector_to_arrayラッパー追加 (SPARK-33040)
  • インスタンスを適応的にブロック化 - LinearSVC (SPARK-32907)
  • CrossValidator/TrainValidateSplit/OneVsRest Reader/WriterがPythonバックエンドEstimator/Evaluatorをサポートするようにする (SPARK-33520)
  • ML ALS recommendForAllのGEMVによるパフォーマンス向上 (SPARK-33518)
  • UnivariateFeatureSelector追加 (SPARK-34080)

その他の注目すべき変更点

  • GMMサマリー計算と分布更新を1つのジョブで (SPARK-31032)
  • ChiSqSelectorのmllib.ChiSqSelectorModelへの依存関係削除 (SPARK-31077)
  • testChiSquareのテスト結果DataFrameのフラット化 (SPARK-31301)
  • MinHash keyDistance最適化 (SPARK-31436)
  • KMeansの三角形不等式に基づく最適化 (SPARK-31007)
  • ClusteringEvaluatorでの重みサポート追加 (SPARK-31734)
  • EvaluatorsへのgetMetrics追加 (SPARK-31768)
  • LinearRegressionSummaryでのインスタンス重みサポート追加 (SPARK-31944)
  • CrossValidatorへのユーザー指定折り畳み列追加 (SPARK-31777)
  • MLパラメータデフォルト値のフィーチャーとチューニングでの整合性 (SPARK-32310)
  • KMeans/BiKMeansでの二重キャッシュ修正 (SPARK-32676)
  • aft transform最適化 (SPARK-33111)
  • FeatureHasher transform最適化 (SPARK-32974)
  • DataFrame列のためのarray_to_vector関数追加 (SPARK-33556)
  • MLパラメータデフォルト値の分類、回帰、クラスタリング、fpmでの整合性 (SPARK-32310)
  • Summary.totalIterationsがmaxItersを超える (SPARK-31925)
  • ツリーモデル予測最適化 (SPARK-32298)

動作の変更

MLlibの移行ガイドをお読みください: MLlib

プログラミングガイド: Machine Learning Library (MLlib) Guide

SparkR

  • SparkRインターフェースで高階関数をサポート (SPARK-30682)
  • unionByNameで欠損列のNULLを埋めるサポート (SPARK-32798)
  • SparkR関数でのwithColumnサポート (SPARK-32946)
  • SparkR関数でのtimestamp_secondsサポート (SPARK-32949)
  • SparkR関数でのnth_valueサポート (SPARK-33030)
  • 最小Arrowバージョンを1.0.0に引き上げ (SPARK-32452)
  • SparkR関数でのarray_to_vectorサポート (SPARK-33622)
  • acosh, asinh, atanhサポート (SPARK-33563)
  • from_avroとto_avroサポート (SPARK-33304)

動作の変更

詳細については、移行ガイドをお読みください。

プログラミングガイド: SparkR (R on Spark)

GraphX

プログラミングガイド: GraphX Programming Guide

非推奨および削除された機能

  • Python 2.7, 3.4, 3.5のサポート削除 (SPARK-32138)
  • R < 3.5のサポート削除 (SPARK-32073)
  • hive-1.2ディストリビューションの削除 (SPARK-32981)
  • org.spark-project.hiveへの参照削除 (SPARK-20202)
  • Standaloneでの同一ホスト上の複数Workerサポートの非推奨化 (SPARK-31018)

既知の問題

  • [SPARK-33392] V1 ALTER TABLE .. SET LOCATION での大文字小文字の区別を尊重
  • [SPARK-34531] PrometheusServlet の Experimental API タグ削除
  • [SPARK-34515] getPartitionsByFilter 中に InSet が null 値を含む場合の NPE 修正
  • [SPARK-34497] JDBC 接続プロバイダーが JVM セキュリティコンテキストから Kerberos クレデンシャルを削除していない
  • [SPARK-34490] テーブルがドロップされた場合、テーブルがビューとして解決される可能性
  • [SPARK-34473] DataFrameReader.schema(StructType) での NPE 回避
  • [SPARK-34436] DPP で LIKE ANY/ALL をサポート

クレジット

最後に、しかし最も重要なこととして、このリリースは以下の貢献者なしでは不可能でした: Abhishek Dixit, Adam Binford, Ajith S, Akshat Bordia, Alessandro Patti, Alex Favaro, Ali Afroozeh, Ali Smesseim, Allison Wang, Ankit Srivastava, Anton Okolnychyi, Antonin Delpeuch, Artsiom Yudovin, Arwin Tio, Attila Zsolt Piros, Baohe Zhang, Bo Yang, Bo Zhang, Brandon Jiang, Bruce Robbins, Bryan Cutler, CC Highman, Chandni Singh, Chao Sun, Chen Zhang, Cheng Su, Chuliang Xiao, DB Tsai, Dale Clarke, Daniel Himmelstein, Daniel Moore, David Toneian, Denis Pyshev, Devesh Agrawal, Dilip Biswal, Dmitry Sabanin, Dongjoon Hyun, Du Ripeng, Emilian Bold, Eren Avsarogullari, Eric Lemmon, Eric Wu, Erik Krogen, Fabian Höring, Farhan Khan, Farooq Qaiser, Fei Wang, Fokko Driesprong, Frank Yin, Fuwang Hu, Gabor Somogyi, Gengliang Wang, Gera Shegalov, German Schiavon Matteo, Goki Mori, Guangxin Wang, Gustavo Martin Morcuende, Herman Van Hovell, Holden Karau, Huang Yi, Haejoon Lee, Huaxin Gao, Hyukjin Kwon, Izek Greenfield, Jackey Lee, Jacob Kim, Jalpan Randeri, Jatin Puri, Jiaan Geng, Jinxin Tang, Josh Soref, Jonathan Lafleche, Jungtaek Lim, Karen Feng, Karol Chmist, Kaxil Naik, Kazuaki Ishizaki, Ke Jia, Keiji Yoshida, Kent Yao, Kevin Su, Kevin Wang, Koert Kuipers, Kousuke Saruta, Kyle Bendickson, Lantao Jin, Leanken Lin, Liang Zhang, Liang-Chi Hsieh, Linhong Liu, Lipeng Zhu, Lu Lu, Luca Canali, Maciej Szymkiewicz, Manu Zhang, Marcelo Vanzin, Maryann Xue, Matthew Cheah, Maxim Gekk, Michael Chirico, Michael Munday, Michał Wieleba, Min Shen, Nan Zhu, Nicholas Chammas, Nicholas Marcott, Nik Vanderhoof, Onur Satici, Pablo Langa, Pascal Gillet, Paul Reidy, Pavithra Ramachandran, Pedro Rossi, Peter Toth, Philipse Guo, Piotr Grzegorski, Prakhar Jain, Prashant Sharma, Qianyang Yu, Qilong Su, Rajat Ahuja, Rakesh Raushan, Rameshkrishnan Muthusamy, Raphael Auv, Richard Penney, Robert (Bobby) Evans, Rohit Mishra, Ruifeng Zheng, Ryan Blue, Ryotaro Tsuzuki, Samir Khan, Samuel Souza, Sandeep Katta, Sander Goos, Saurabh Chawla, Sean Owen, Seongjin Cho, Shane Knapp, Shanyu Zhao, Shaoyun Chen, Shixiong Zhu, Shruti Gumma, Srinivas Rishindra Pothireddi, Stavros Kontopoulos, StefanXiepj, Stijn De Haes, Stuart White, Sudharshann D, Sunitha Kambhampati, Takeshi Yamamuro, Takuya UESHIN, Tanel Kiis, Tathagata Das, Terry Kim, Thomas Graves, Tianshi Zhu, Tom Howland, Tom Van Bussel, Udbhav Agrawal, Uncle Gen, Utkarsh Agarwal, Venkata Krishnan Sowrirajan, Vlad Glinsky, Warren Zhu, Weichen Xu, Wenchen Fan, William Hyun, Wing Yew Poon, Xianyin Xin, Xiao Li, Xiduo You, Xingbo Jiang, Xinrong Meng, Xinyi Yu, Xuedong Luan, Yang Jie, Yaroslav Tkachenko, Ye Zhou, Yi Wu, Yi Zhu, Yu Zhong, Yuanjian Li, Yuexin Zhang, Yuming Wang, Yuning Zhang, Zhen Li, Zhenhua Wang, Zhicheng Jin, Zirui Xu, Zuo Dao, akiyamaneko, artiship, cristichircu, dzlab, huangtianhua, liucht-inspur, manubatham20, waitinfuture, wang-zhun, yzjg


Spark ニュースアーカイブ