Spark リリース 2.4.0

Apache Spark 2.4.0 は 2.x ラインの 5 回目のリリースです。このリリースでは、ディープラーニングフレームワークとの統合を改善するためのバリア実行モード、複雑なデータ型をより簡単に扱うための 30 以上の組み込み関数と高階関数、K8s との統合の改善、実験的な Scala 2.12 サポートが追加されています。その他の主な更新には、組み込みの Avro データソース、画像データソース、柔軟なストリーミングシンク、転送中の 2GB ブロックサイズ制限の排除、Pandas UDF の改善が含まれます。さらに、このリリースは、約 1100 件のチケットを解決しつつ、ユーザビリティ、安定性、および磨き上げに引き続き注力しています。

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

Core および Spark SQL

  • 主要機能
    • バリア実行モード: [SPARK-24374] スケジューラにバリア実行モードをサポートし、ディープラーニングフレームワークとの統合を改善します。
    • Scala 2.12 サポート: [SPARK-14220] 実験的な Scala 2.12 サポートを追加しました。これで、Scala 2.12 で Spark をビルドし、Scala 2.12 で Spark アプリケーションを作成できます。
    • 高階関数: [SPARK-23899] 複雑なデータ型をより簡単に扱うための、高階関数を含む多くの新しい組み込み関数を追加しました。
    • 組み込み Avro データソース: [SPARK-24768] Spark-Avro パッケージを論理型サポートとともにインライン化し、パフォーマンスとユーザビリティを向上させました。
  • API
    • [SPARK-24035] Pivot の SQL 構文
    • [SPARK-24940] SQL クエリの Coalesce および Repartition ヒント
    • [SPARK-19602] 完全修飾列名の列解決をサポート
    • [SPARK-21274] EXCEPT ALL および INTERSECT ALL を実装
  • パフォーマンスと安定性
    • [SPARK-16406] 大量の列の参照解決はより高速になるはずです
    • [SPARK-23486] lookupFunctions のための外部カタログからの関数名をキャッシュします
    • [SPARK-23803] バケットプルーニングをサポート
    • [SPARK-24802] 最適化ルールの除外
    • [SPARK-4502] Parquet テーブルのネストスキーマプルーニング
    • [SPARK-24296] 2GB より大きいブロックのレプリケーションをサポート
    • [SPARK-24307] メモリから 2GB より大きいメッセージの送信をサポート
    • [SPARK-23243] RDD に対する Shuffle+Repartition は不正確な結果につながる可能性があります
    • [SPARK-25181] BlockManager マスターおよびスレーブスレッドプールのサイズを制限し、ネットワークが遅い場合のメモリオーバーヘッドを削減しました
  • コネクタ
    • [SPARK-23972] Parquet を 1.8.2 から 1.10.0 に更新
    • [SPARK-25419] Parquet 述語プッシュダウンの改善
    • [SPARK-23456] ネイティブ ORC リーダーがデフォルトで有効になりました
    • [SPARK-22279] Hive serde テーブルを読み込むためにネイティブ ORC リーダーをデフォルトで使用します
    • [SPARK-21783] ORC フィルタプッシュダウンをデフォルトで有効にします
    • [SPARK-24959] JSON および CSV の count() を高速化
    • [SPARK-24244] CSV パーサーに必要な列のみを解析します
    • [SPARK-23786] CSV スキーマ検証 - 列名がチェックされていません
    • [SPARK-24423] JDBC から読み込むクエリを指定するためのオプションクエリ
    • [SPARK-22814] JDBC パーティション列での日付/タイムスタンプのサポート
    • [SPARK-24771] Avro を 1.7.7 から 1.8 に更新
  • Kubernetes スケジューラバックエンド
    • [SPARK-23984] K8S の PySpark バインディング
    • [SPARK-24433] K8S の R バインディング
    • [SPARK-23146] Kubernetes クラスターバックエンドのクライアントモードをサポート
    • [SPARK-23529] K8S ボリュームのマウントをサポート
  • PySpark
    • [SPARK-24215] DataFrame API の遅延評価を実装
    • [SPARK-22274] Pandas UDF によるユーザー定義集計関数
    • [SPARK-22239] Pandas UDF によるユーザー定義ウィンドウ関数
    • [SPARK-24396] Python 用 Structured Streaming ForeachWriter を追加
    • [SPARK-23874] Apache Arrow を 0.10.0 にアップグレード
    • [SPARK-25004] spark.executor.pyspark.memory 制限を追加
    • [SPARK-23030] Pandas DataFrame の作成と収集に Arrow ストリーム形式を使用
    • [SPARK-24624] Python UDF とスカラー Pandas UDF の混合をサポート
  • その他の注目すべき変更
    • [SPARK-24596] 非連鎖キャッシュ無効化
    • [SPARK-23880] データのキャッシュのためにジョブをトリガーしない
    • [SPARK-23510] Hive 2.2 および Hive 2.3 メタストアをサポート
    • [SPARK-23711] UnsafeProjection のためのフォールバックジェネレーターを追加
    • [SPARK-24626] Analyze Table コマンドでの場所サイズ計算を並列化

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

Structured Streaming

  • 主要機能
    • [SPARK-24565] foreachBatch (Python, Scala, Java) を使用して、各マイクロバッチの出力行を DataFrame として公開しました
    • [SPARK-24396] foreach および ForeachWriter の Python API を追加しました
    • [SPARK-25005] トランザクションプロデューサーを使用して書き込まれた Kafka トピックからコミットされたレコードのみを読み取るために “kafka.isolation.level” をサポートします。
  • その他の注目すべき変更
    • [SPARK-24662] Append または Complete モードのストリームに対する LIMIT 演算子をサポート
    • [SPARK-24763] ストリーミング集計で、値から重複するキーデータを削除します
    • [SPARK-24156] 入力ストリームにデータがない場合の、ステートフル操作 (mapGroupsWithState、ストリーム-ストリーム結合、ストリーミング集計、ストリーミング dropDuplicates) の出力結果生成および/またはステートクリーンアップの高速化。
    • [SPARK-24730] クエリに複数の入力ストリームがある場合に、最小または最大ウォーターマークのいずれかを選択するためのサポート
    • [SPARK-25399] マイクロバッチストリーミングの実行スレッドを連続処理で再利用すると、正確性の問題が発生する可能性があったバグを修正しました
    • [SPARK-18057] Kafka クライアントバージョンを 0.10.0.1 から 2.0.0 にアップグレードしました

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

MLlib

  • 主要機能
    • [SPARK-22666] 画像フォーマット用の Spark データソース
  • その他の注目すべき変更
    • [SPARK-22119] KMeans/BisectingKMeans/Clustering 評価器にコサイン距離尺度を追加
    • [SPARK-10697] アソシエーションルールマイニングにおけるリフト計算
    • [SPARK-14682] spark.ml GBT のための evaluateEachIteration メソッドまたは同等のものを提供
    • [SPARK-7132] spark.ml GBT に検証セット付きの fit を追加
    • [SPARK-15784] spark.ml に Power Iteration Clustering を追加
    • [SPARK-15064] StopWordsRemover におけるロケールサポート
    • [SPARK-21741] DataFrame ベースの多変量サマライザーのための Python API
    • [SPARK-21898] MLlib における KolmogorovSmirnovTest の機能同等性
    • [SPARK-10884] 回帰および分類関連モデルの単一インスタンスでの予測をサポート
    • [SPARK-23783] ML パイプラインのための新しい汎用エクスポートトレイトを追加
    • [SPARK-11239] ML 線形回帰のための PMML エクスポート

プログラミングガイド: 機械学習ライブラリ (MLlib) ガイド

SparkR

  • 主要機能
    • [SPARK-25393] from_csv() という新しい関数を追加
    • [SPARK-21291] DataFrame に R partitionBy API を追加
    • [SPARK-25007] SparkR に array_intersect/array_except/array_union/shuffle を追加
    • [SPARK-25234] parallelize における整数オーバーフローを回避
    • [SPARK-25117] R における EXCEPT ALL および INTERSECT ALL サポートを追加
    • [SPARK-24537] array_remove / array_zip / map_from_arrays / array_distinct を追加
    • [SPARK-24187] SparkR に array_join 関数を追加
    • [SPARK-24331] SparkR に arrays_overlap, array_repeat, map_entries を追加
    • [SPARK-24198] SparkR に slice 関数を追加
    • [SPARK-24197] SparkR に array_sort 関数を追加
    • [SPARK-24185] SparkR に flatten 関数を追加
    • [SPARK-24069] array_min / array_max 関数を追加
    • [SPARK-24054] array_position 関数 / element_at 関数を追加
    • [SPARK-23770] SparkR に repartitionByRange API を追加

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

GraphX

  • 主要機能
    • [SPARK-25268] Parallel Personalized PageRank の実行でシリアライゼーション例外が発生

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

非推奨

  • MLlib
    • [SPARK-23451] KMeans computeCost を非推奨化
    • [SPARK-25345] ImageSchema の readImages API を非推奨化

動作の変更

  • Spark Core
    • [SPARK-25088] REST サーバーのデフォルトとドキュメントの更新
  • Spark SQL
    • [SPARK-23549] タイムスタンプと日付の比較時にタイムスタンプにキャスト
    • [SPARK-24324] Pandas Grouped Map UDF は結果列を名前で割り当てるべきです
    • [SPARK-23425] ワイルドカードを使用した HDFS ファイルパスのデータロードが正しく機能していません
    • [SPARK-23173] from_json は、非ヌル可能とマークされているフィールドに対してヌルを生成する可能性があります
    • [SPARK-24966] セット操作の優先順位ルールを実装
    • [SPARK-25708] GROUP BY なしの HAVING はグローバル集計になるべきです
    • [SPARK-24341] マルチバリュー IN サブクエリを正しく処理
    • [SPARK-19724] 既存のデフォルト場所を持つ管理テーブルを作成すると例外が発生するはずです

すべての動作変更については、移行ガイドをお読みください

既知の問題

  • [SPARK-25271] Hive Parquet テーブルの CTAS はネイティブ Parquet ソースを活用すべきです
  • [SPARK-24935] Spark 2.2 以降の Hive UDAF の実行に関する問題
  • [SPARK-25879] ネストされたフィールドとトップレベルフィールドが選択されている場合、スキーマプルーニングが失敗します
  • [SPARK-25906] spark-shell は -i オプションを正しく処理できません
  • [SPARK-25921] Python ワーカーの再利用により、バリアタスクが BarrierTaskContext なしで実行されます
  • [SPARK-25918] LOAD DATA LOCAL INPATH は相対パスを処理すべきです

クレジット

最後に、このリリースは以下の貢献者なしでは実現できませんでした: Achuth17, Adam Bradbury, Adamyuanyuan, Adelbert Chang, Ala Luszczak, Aleksandr Koriagin, Alessandro Bellina, Alessandro Solimando, Andrew Korzhuev, Anton Okolnychyi, Antonio Murgia, Arseniy Tashoyan, Artem Rudoy, Arun Mahadevan, Asher Saban, Bago Amirbekian, Benjamin Peterson, Bo Meng, Bogdan Raducanu, Bounkong Khamphousone, Brandon Krieger, Brian Lindblom, Bruce Robbins, Bryan Cutler, Cheng Lian, Chongguang LIU, Chris Horn, Chris Martin, Cody Koeninger, DB Tsai, Daniel Sakuma, Daniel Van Der Ende, Darcy Shen, David Vogelbacher, Devaraj K, Dhruve Ashar, Dilip Biswal, Dongjoon Hyun, DylanGuedes, Efim Poberezkin, Eric Chang, Eric Liang, Erik Erlandson, Eyal Farago, Fangshi Li, Felix Cheung, Feng Liu, Fernando Pereira, Florent Pepin, Fokko Driesprong, Gabor Somogyi, Gengliang Wang, Ger Van Rossum, Gera Shegalov, Goun Na, Hao Ren, Henry Robinson, Herman Van Hovell, Hieu Huynh, Holden Karau, Huang Tengfei, Huaxin Gao, Hyukjin Kwon, Ilan Filonenko, Imran Rashid, Jacek Laskowski, Jake Charland, James Thompson, James Yu, Jaroslav Chladek, Jeff Zhang, JiahuiJiang, Jim Kleckner, Joey Krabacher, John Zhuge, Jongyoul Lee, Jooseong Kim, Jose Torres, Joseph Bradley, Joseph K. Bradley, Josh Rosen, Julien Cuquemelle, Juliusz Sompolski, Jungtaek Lim, KaiXinXIaoLei, Kallman, Steven, Karthik Palaniappan, Kaya Kupferschmidt, Kazuaki Ishizaki, Kelley Robinson, Kent Yao, Kevin Yu, KevinZwx, Koert Kuipers, Kousuke Saruta, Kris Mok, LantaoJin, Lee Dongjin, Lemonjing, Li Jin, Liang-Chi Hsieh, Lu WANG, LucaCanali, Marcelo Vanzin, Marco Gaido, Marek Novotny, Mario Molina, Mark Petruska, Maryann Xue, Mathieu St-Louis, Matthew Cheah, Matthew Tovbin, Mauro Palsgraaf, Maxim Gekk, Michael (Stu) Stewart, Michael Allman, Michael Chirico, Michael Mior, Michal Switakowski, Mihaly Toth, Miklos C, Miles Yucht, Misha Dmitriev, Mukul Murthy, Mykhailo Shtelma, Neal Song, Ngone51, Nihar Sheth, Nolan Emirot, Norman Maurer, Onur Satici, Patrick McGloin, Patrick Pisciuneri, Paul Mackles, Peter Toth, Prashant Sharma, Rao Fu, Ray Burgemeestre, Rekha Joshi, Reynold Xin, Reza Safi, Ricardo Martinelli De Oliveira, Rob Vesse, Robert Kruszewski, Rong Tang, Ryan Blue, Sahil Takiar, Saisai Shao, Sandeep Singh, Sandor Murakozi, Sanket Chintapalli, Santiago Saavedra, Sean Owen, Sean Suchter, Sebastian Arzt, Shane Knapp, Shixiong Zhu, Soham Aurangabadkar, Stacy Kerkela, Stan Zhai, Stavros Kontopoulos, Steve Loughran, Sunitha Kambhampati, Takeshi Yamamuro, Takuya UESHIN, Tathagata Das, Ted Yu, Teng Peng, Thiruvasakan Paramasivan, Thomas Graves, Tom Saleeba, Vayda, Oleksandr: IT (PRG), Vinod KC, Vladimir Kuriatkov, Wang Gengliang, Weichen Xu, Wenbo Zhao, Wenchen Fan, William Sheu, XD-DENG, Xiangrui Meng, Xianjin YE, Xianyang Liu, Xiao Li, Xiaogang Tu, Xiayun Sun, Xingbo Jiang, Yacine Mazari, Yash Sharma, Ye Zhou, Yinan Li, Yogesh Garg, Yuanbo Liu, Yuanjian Li, Yuchen Huo, Yuexin Zhang, Yuming Wang, Yuval Itzchakov, Zhan Zhang, Zhang Le, Zheng RuiFeng, Zoltan C. Toth


Spark ニュースアーカイブ