Spark 1.1.0 は、1.X ラインの最初のマイナーリリースです。このリリースでは、Spark Core における運用およびパフォーマンスの改善に加え、Spark の最新ライブラリである MLlib および Spark SQL の大幅な拡張が導入されました。また、Spark の Python サポートも拡張され、Spark Streaming モジュールに新しいコンポーネントが追加されました。Spark 1.1 は、171 名のコントリビューターの貢献によるもので、Spark リリースにおける過去最高の貢献者数となります!
Spark 1.1 をダウンロードするには、ダウンロードページをご覧ください。
全体的に、Spark 1.1 は、特に大規模ワークロードにおいて、安定性とパフォーマンスを向上させる機能を追加しました。Spark は、キャッシュ操作中にスキューしたブロックのディスクスピルを実行するようになり、単一の RDD パーティションが大きい場合にメモリオーバーフローを防ぐようになりました。Spark 1.0 で導入された集計中のディスクスピルは、PySpark に移植されました。このリリースでは、非常に大規模なシャッフルに最適化された新しいシャッフル実装が導入されています。この「ソートベースシャッフル」は、次期リリースでデフォルトになりますが、現在ユーザーが利用可能です。多数のレデューサーを持つジョブでは、これを有効にすることを推奨します。このリリースでは、長時間実行される複雑なジョブのパフォーマンスを監視するためのいくつかのユーザビリティ改善も追加されています。変更点には、Spark UI に表示されるより良い名前付きアキュムレータ、タスクの進捗状況の動的なメトリック更新、および入力データを読み取るタスクの入力メトリックのレポートなどがあります。
Spark SQL は、このリリースで多くの新機能とパフォーマンス改善を追加しました。JDBC/ODBC サーバーにより、ユーザーはさまざまなアプリケーションから SparkSQL に接続でき、キャッシュされたテーブルへの共有アクセスを提供します。新しいモジュールは、JSON データを Spark の SchemaRDD フォーマットに直接ロードするためのサポートを提供し、スキーマ推論も自動で行われます。Spark SQL は、このリリースで動的なバイトコード生成を導入しました。これは、複雑な式評価を実行するクエリの実行を大幅に高速化する技術です。このリリースでは、Python、Scala、Java のラムダ関数を UDF として登録するサポートも追加され、SQL で直接呼び出すことができます。Spark 1.1 では、カスタムデータソースから SchemaRDD を作成できるパブリック型 API が追加されました。最後に、ネイティブ Parquet サポートおよびエンジン全体に多くの最適化が追加されています。
MLlib は、このリリースでいくつかの新しいアルゴリズムと最適化を追加しました。1.1 では、探索的分析関数を提供する新しい統計パッケージライブラリが導入されました。これらには、層化サンプリング、相関、カイ二乗検定、およびランダムデータセット作成のサポートが含まれます。このリリースでは、特徴抽出(Word2Vec および TF-IDF)および特徴変換(正規化と標準スケーリング)のためのユーティリティが追加されました。また、非負行列分解およびSVD(Lanczos 経由)のサポートも新しく追加されました。決定木アルゴリズムは、Python と Java に追加されました。多くの既存アルゴリズムの最適化を支援するために、ツリー集約プリミティブが追加されました。MLlib 1.1 では、全体的にパフォーマンスが向上しており、多くのアルゴリズムで 2〜3 倍、大規模な決定木問題では最大 5 倍の改善が見られます。
Spark Streaming は、新しいデータソースであるAmazon Kinesis を追加しました。Apache Flume については、データを Flume からプルする新しいモードがサポートされ、デプロイが簡素化され、高可用性が提供されます。一連のストリーミング機械学習アルゴリズムの最初のものとして、ストリーミング線形回帰が導入されました。最後に、ストリーミング入力用のレート制限が追加されました。GraphX は、頂点とエッジのカスタムストレージレベルと、全体的な数値精度の向上を追加しました。最後に、GraphX は新しいラベル伝播アルゴリズムを追加しました。
Spark 1.1.0 は Spark 1.0.X と後方互換性があります。一部の構成オプションのデフォルト値が変更されたため、既存のユーザーにとって関連性がある場合があります。
spark.io.compression.codec のデフォルト値は snappy になりました。古い動作は、lzf に切り替えることで復元できます。spark.broadcast.factory のデフォルト値は org.apache.spark.broadcast.TorrentBroadcastFactory になりました。古い動作は、org.apache.spark.broadcast.HttpBroadcastFactory に切り替えることで復元できます。spark.shuffle.spill を false に設定することで復元できます。spark.default.parallelism をクラスターのコア数に設定することで復元できます。貢献してくださった皆様、ありがとうございました!