© 2021 NTT DATA Corporation
Apache Sparkの基本と
最新バージョン3.2のアップデート
2021/11/20
株式会社NTTデータ 技術開発本部
猿田 浩輔
オープンソースカンファレンス2021
Online/Fukuoka
2
© 2021 NTT DATA Corporation
$ whoami
 猿田 浩輔
 株式会社NTTデータ 技術開発本部
 Apache Sparkコミッタ & PMCメンバ
 Hadoop/Sparkなど、OSSミドル関連のR&Dや技術支援
 普及活動の一環で講演や書籍執筆なども
 Twitter: @raspberry1123
3
© 2021 NTT DATA Corporation
本日のお話
①Apache Sparkの基本
②近年のApache Sparkの動向
③Apache Spark 3.2のアップデート
Apache Sparkの基本
5
© 2021 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 OSSの並列分散処理系
6
© 2021 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 OSSの並列分散処理系
大量のデータセットを
(数100GBs, TBs, PBs, 数千
万, 数億レコード)
7
© 2021 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 OSSの並列分散処理系
複数台のサーバで構成された
クラスタを用いて
大量のデータセットを
(数100GBs, TBs, PBs, 数千
万, 数億レコード)
8
© 2021 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 OSSの並列分散処理系
複数台のサーバで構成された
クラスタを用いて
現実的な時間で処理する
(数十分, 数時間のオーダー)
大量のデータセットを
(数100GBs, TBs, PBs, 数千
万, 数億レコード)
9
© 2021 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 OSSの並列分散処理系
 並列分散処理に関する面倒な制御をSparkが肩代わりしてくれる。
 エラーハンドリング
 処理の分割やスケジューリング
 etc
複数台のサーバで構成された
クラスタを用いて
現実的な時間で処理する
(数十分, 数時間のオーダー)
大量のデータセットを
(数100GBs, TBs, PBs, 数千
万, 数億レコード)
10
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
さまざまなパラダイムのアナリティクスを可能にする
11
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
さまざまなパラダイムのアナリティクスを可能にする
12
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
さまざまなパラダイムのアナリティクスを可能にする
13
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
さまざまなパラダイムのアナリティクスを可能にする
14
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
さまざまなパラダイムのアナリティクスを可能にする
15
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
さまざまなパラダイムのアナリティクスを可能にする
後のスライドでもう少し解説
16
© 2021 NTT DATA Corporation
さまざまなパラダイムのアナリティクスを可能にする
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
© 2021 NTT DATA Corporation
近年のApache Sparkの動向
18
© 2021 NTT DATA Corporation
近年(Spark 3.0以降)のApache Sparkの動向
①Spark SQLの飛躍的な進化
• 以前からこの傾向は長く継続しているが、近年はアグレッシブな
最適化手法が導入されるなど更に重要な位置付けになってき
ている
②PySpark(※)のユーザビリティ向上
• アナリティクスの分野で用いられる事が多いPythonのユーザ向
けに、機能改善やドキュメントの整備が行われている
※ SparkのPythonバインディング
© 2021 NTT DATA Corporation
① Spark SQLの飛躍的な進化
20
© 2021 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
Sparkのソフトウェアスタックとプログラミング言語
21
© 2021 NTT DATA Corporation
Spark SQLのおさらい - SQLやDSLでテーブルを操作するように処理を記述可能 -
 データセットをRDBのテーブルのように操作する手段を提供する
 DataFrameと呼ばれるテーブル表現に対してSQLに似たAPIでクエリを発行できる
 SQLで処理を記述することもできる
 カラムには名前やデータ型を付与でき、見通しの良いデータ処理の記述を可能にしている
id,name,date
0,aaa,2020-05-21
1,bbb,2020-06-03
2,ccc,2020-07-08
・・・
id
(Integer)
name
(String)
date
(Date)
0 aaa 2020-05-21
1 bbb 2020-06-03
2 ccc 2020-07-08
・・・
カラム名やデータ型は、明示的な指定だけでなく推論させることが可能
テーブル / DataFrame
22
© 2021 NTT DATA Corporation
Spark SQLのおさらい - シンプルなアプリケーションの例 -
where
select groupBy avg
val df = spark.read.json("/path/to/dataset")
val result = df.select("col1", "col2").where("col3 > 0")
.groupBy("col1").avg("col2")
23
© 2021 NTT DATA Corporation
Spark SQLのおさらい - クエリから最適化データフローを生成する -
クエリエンジン
SQL APIを用いたデータ操作
• クエリのパース
• 実行プランの生成
• 意味解析
• 最適化
• RDD(Sparkの最もプリミティブなデータ表現)レベルで表現されたデータフロー
• 加工の仕方や順序などはクエリエンジンによって最適化済み
RDD
ロード 保存
RDD
加工 加工
RDD ・・・
24
© 2021 NTT DATA Corporation
Spark SQLのクエリエンジンの進化はめざましい
Spark 1.x
ルールベース
Spark 2.x
ルールベース + コストベース
25
© 2021 NTT DATA Corporation
Spark SQLのクエリエンジンの進化はめざましい
Spark 1.x
ルールベース
Spark 2.x
ルールベース + コストベース
Spark 3.x
ルールベース + コストベース + ランタイムベース
処理の途中で得られた、推定ではない実際の情報をもとに、
適応的に実行プランの最適化が行われるようになった
Adaptive Query Execution (AQE)
26
© 2021 NTT DATA Corporation
ランタイムの最適化の一例(ジョインアルゴリズムの動的な変更)
Scan + Filter
Sort Merge Join
Scan
対象のデータサイズは100GB
Sort Sort
テーブルのサイズを考慮して、
Sort Merge Joinが選択されている状態
27
© 2021 NTT DATA Corporation
ランタイムの最適化の一例(ジョインアルゴリズムの動的な変更)
Scan + Filter
Sort Merge Join
Scan
対象のデータサイズは100GB
実際に読んだのは
10MB
Sort Sort
テーブルのサイズを考慮して、
Sort Merge Joinが選択されている状態
28
© 2021 NTT DATA Corporation
ランタイムの最適化の一例(ジョインアルゴリズムの動的な変更)
Scan + Filter
Sort Merge Join
Scan
Scan + Filter
Broadcast Hash Join
Scan
対象のデータサイズは100GB
実際に読んだのは
10MB
Sort Sort
実行時に判明したデータサイズに基づいて、
片方のデータサイズが小さい場合に最適な
ジョインアルゴリズムに変更
29
© 2021 NTT DATA Corporation
AQEにより、性能が大幅に向上
https://www.slideshare.net/databricks/deep-dive-into-the-new-features-of-apache-spark-30
© 2021 NTT DATA Corporation
② PySparkのユーザビリティ向上
31
© 2021 NTT DATA Corporation
Spark 3.0以降でPySpark関連の大幅なアップデートが行われている
 昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが
行われている
 もともとデータ分析の分野ではPythonが人気
 アップデートの一例
 Pythonicなエラーメッセージ (Spark 3.0)
 ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1)
• IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる
 公式ドキュメントの大幅な改善 (Spark 3.1)
• 目的のコンテンツを探しやすいように構造化
• クイックスタートガイドやサンプルコードも充実
• APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの
docstringの可読性が向上した)
32
© 2021 NTT DATA Corporation
Spark 3.0以降でPythonユーザ向けに大幅なアップデートが行われている
 昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが
行われている
 もともとデータ分析の分野ではPythonが人気
 アップデートの一例
 Pythonicなエラーメッセージ (Spark 3.0)
 ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1)
• IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる
 公式ドキュメントの大幅な改善 (Spark 3.1)
• 目的のコンテンツを探しやすいように構造化
• クイックスタートガイドやサンプルコードも充実
• APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの
docstringの可読性が向上した)
Pick Up!
33
© 2021 NTT DATA Corporation
ブラッシュアップされたドキュメント
https://spark.apache.org/docs/latest/api/python/getting_started/index.html
従来はPySpark向けのドキュ
メントが整理されていなかったが、
Spark 3.1以降でまとまったも
のが提供されるようになった
34
© 2021 NTT DATA Corporation
ブラッシュアップされたドキュメント
https://spark.apache.org/docs/latest/api/python/getting_started/index.html
探したいコンテンツを見つけ
やすいように、ナビゲーション
が追加された
_
インストールガイドやクイック
スタートガイドも整備された
ライブノートブックで試しに動
かすこともできる
35
© 2021 NTT DATA Corporation
ブラッシュアップされたドキュメント
Spark 3.0までのAPIドキュメント Spark 3.1からのAPIドキュメント
コンポーネントごとにカテゴライズされ、
目的のAPIが探しやすい
https://spark.apache.org/docs/latest/api/python/reference/index.html
© 2021 NTT DATA Corporation
Apache Spark 3.2
37
© 2021 NTT DATA Corporation
Apache Spark 3.2
本セッション実施時点での最新フィーチャーリリース
日本時間で2021/10/19深夜にリリースされた
Spark 3.1のリリース以降、1700以上のIssueが解決された
本セッションでは、特に多くのユーザに恩恵がある(と思われる)以下
2点を解説
①pandas API on Spark
②セッションウィンドウ
© 2021 NTT DATA Corporation
pandas API on Spark
39
© 2021 NTT DATA Corporation
Spark 3.0以降PySpark関連の大幅なアップデートが行われている (再掲)
 昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが
行われている
 もともとデータ分析の分野ではPythonが人気
 アップデートの一例
 Pythonicなエラーメッセージ (Spark 3.0)
 ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1)
• IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる
 公式ドキュメントの大幅な改善 (Spark 3.1)
• 目的のコンテンツを探しやすいように構造化
• クイックスタートガイドやサンプルコードも充実
• APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの
docstringの可読性が向上した)
40
© 2021 NTT DATA Corporation
Pythonユーザ向けのアップデートの一環として、pandas APIのサポートが導入された
 昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが
行われている
 もともとデータ分析の分野ではPythonが人気
 アップデートの一例
 Pythonicなエラーメッセージ (Spark 3.0)
 ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1)
• IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる
 公式ドキュメントの大幅な改善 (Spark 3.1)
• 目的のコンテンツを探しやすいように構造化
• クイックスタートガイドやサンプルコードも充実
• APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの
docstringの可読性が向上した)
 pandas APIのサポート (Spark 3.2)
Pick Up!
41
© 2021 NTT DATA Corporation
データ分析では人気のpandas。でも計算機1台で処理しきれなくなったら・・・?
 pandasはデータ分析で用いられる
デファクトスタンダードなライブラリのひとつだが、
単一の計算機で処理しきれないデータを扱う場合
pandas以外の方法を検討する必要があった
 PySparkは選択肢のひとつとなり得るが、既存の資産を流用できなかったり、
従来pandasを利用してきたユーザにとって使いやすいAPIではなかった
 そこで、Koalasと呼ばれるプロジェクトが立ち上がった
42
© 2021 NTT DATA Corporation
What is Koalas?
 Koalas
 pandas互換のAPIで、Sparkのアプリケーションを
記述可能にする
 pandasユーザが使い慣れたAPIそのままに、処理を
スケールアウト可能
 https://github.com/databricks/koalas
 類似プロダクトのDaskと比較して、5倍程度高速という結果も
 https://www.slideshare.net/databricks/koalas-how-well-
does-koalas-work
 Spark 3.2からは、KoalasのコードがSparkにポートされ、Sparkの標準機
能として使えるようになる
 https://issues.apache.org/jira/browse/SPARK-34849
43
© 2021 NTT DATA Corporation
pandas API on Sparkを用いたSparkアプリケーション記述例
import pandas as pd
df = pd.read_csv(file)
df['x'] = df.y * df.z
df.describe()
df.plot.line(...)
import databricks.koalas as ks
df = ks.read_csv(file)
df['x'] = df.y * df.z
df.describe()
df.plot.line(...)
Pandas Koalas
44
© 2021 NTT DATA Corporation
pandas API on Sparkを用いたSparkアプリケーション記述例
import pandas as pd
df = pd.read_csv(file)
df['x'] = df.y * df.z
df.describe()
df.plot.line(...)
import databricks.koalas as ks
df = ks.read_csv(file)
df['x'] = df.y * df.z
df.describe()
df.plot.line(...)
import pyspark.pandas as ps
df = ps.read_csv(file)
df['x'] = df.y * df.z
df.describe()
df.plot.line(...)
Pandas Koalas
pandas API on Spark(Spark 3.2)
45
© 2021 NTT DATA Corporation
プロットもサポート
引用: https://www.slideshare.net/databricks/deep-dive-into-the-new-features-of-apache-spark-31
PandasやKoalasで実装済みのプロット機能を、Spark 3.2でも利用可能
46
© 2021 NTT DATA Corporation
まずは動かして体感すべし!
 pip install pysparkで簡単にインストール可能
 Live Notebookで試しに動かしてみるのもOK
• https://mybinder.org/v2/gh/sarutak/spark/d168315a18?filepath
=python%2Fdocs%2Fsource%2Fgetting_started%2Fquickstart_p
s.ipynb
© 2021 NTT DATA Corporation
セッションウィンドウ
48
© 2021 NTT DATA Corporation
Structured Streamingのおさらい
 Spark SQLをベースに設計された
ストリーム処理フレームワーク
 Spark Streamingと異なり、
クエリエンジンによる最適化の恩恵が受けられる
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
49
© 2021 NTT DATA Corporation
Structured Streamingのおさらい (データ処理モデル)
 ストリームデータをDataFrameのレコードとして扱う
 到着したレコードをDataFrameに追記し、そのDataFrameに対して
処理を行う
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
50
© 2021 NTT DATA Corporation
Structured Streamingのおさらい (データ処理モデル)
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
ストリームデータを
DataFrameの
レコードとして扱う
マイクロバッチを
定期的に起動し、
DataFrameに対して
クエリを発行する
結果を出力する
DataFrameに
対する数10ms -
数100msで完
了するマイクロ
バッチを連続的
に実行することで
ストリーム処理を
実現する
51
© 2021 NTT DATA Corporation
Structured Streamingのおさらい (データ処理モデル)
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
ストリームデータを
DataFrameの
レコードとして扱う
マイクロバッチを
定期的に起動し、
DataFrameに対して
クエリを発行する
結果を出力する
DataFrameに
対する数10ms -
数100msで完
了するマイクロ
バッチを連続的
に実行することで
ストリーム処理を
実現する
1回目
52
© 2021 NTT DATA Corporation
Structured Streamingのおさらい (データ処理モデル)
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
ストリームデータを
DataFrameの
レコードとして扱う
マイクロバッチを
定期的に起動し、
DataFrameに対して
クエリを発行する
結果を出力する
DataFrameに
対する数10ms -
数100msで完
了するマイクロ
バッチを連続的
に実行することで
ストリーム処理を
実現する
2回目
53
© 2021 NTT DATA Corporation
Structured Streamingのおさらい (データ処理モデル)
https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
ストリームデータを
DataFrameの
レコードとして扱う
マイクロバッチを
定期的に起動し、
DataFrameに対して
クエリを発行する
結果を出力する
DataFrameに
対する数10ms -
数100msで完
了するマイクロ
バッチを連続的
に実行することで
ストリーム処理を
実現する
3回目
54
© 2021 NTT DATA Corporation
従来からサポートされているウィンドウ処理(タンブリングウィンドウ)
W1 W2 W3 W4
時刻
12:00 12:05 12:10 12:15 12:20
レコード
• 固定サイズの各タイムウィンドウごとに集約処理を行う
• レコードがどのウィンドウに属するかは、レコードに付与さ
れたタイムスタンプに基づいて決める
• 時間帯ごとの集計などに用いる
• タイムウィンドウごとにレコードの数を数える場合、上記
の例では右のような結果が得られる
タイムウィンドウ レコード数
12:00 - 12:05 2
12:05 - 12:10 1
12:10 - 12:15 3
12:15 - 12:20 2
55
© 2021 NTT DATA Corporation
従来からサポートされているウィンドウ処理 (スライディングウィンドウ)
W1
時刻
12:00 12:05 12:10 12:15 12:20
レコード
W2
W3
W4
12:25
タイムウィンドウ レコード数
12:00 - 12:10 3
12:05 - 12:15 2
12:10 - 12:20 4
12:15 - 12:25 5
• 固定サイズの各タイムウィンドウが重なるようにずらしな
がら集約処理を行う
• 時間変化を考慮した集計に用いる
• タイムウィンドウごとにレコードの数を数える場合、上記
の例では右のような結果が得られる
56
© 2021 NTT DATA Corporation
“セッション”を考慮した集約処理はこれまで難しかった
 ここで言うセッションとは、イベント同士を連続性のあるものとみなす時間範
囲のこと
 時系列で隣接するイベント同士が一定時間以内に発生していたら、そ
れらは同一セッションとみなすのが典型的な例
 例えばWebサイトにアクセスして、滞在している時間範囲をセッションと見な
して分析に役立てるケースもある
 アクセスログをイベントとして扱い、ログ間のタイムスタンプから連続性を
判定する
時刻
イベント
セッション1 セッション2 セッション3 セッション4
57
© 2021 NTT DATA Corporation
“セッション”を考慮した集約処理はこれまで難しかった
 従来のウィンドウ処理では不十分
 セッションの開始と終了を識別する仕組みが
備わっていない
 ウィンドウサイズが固定
 Spark 3.2からはセッションウィンドウがサポートされた
 Gap Durationで定義される時間に基づいて、セッションの開始と終
了を識別する
 セッションごとに可変なタイムウィンドウを生成できる
58
© 2021 NTT DATA Corporation
セッションウィンドウの例
時刻
12:04
レコード
※ Gap Durationは5分を想定
59
© 2021 NTT DATA Corporation
セッションウィンドウの例
時刻
12:04
W1
最初に到着したレコードのタイムスタンプから、新しいセッションが開始
レコード
※ Gap Durationは5分を想定
60
© 2021 NTT DATA Corporation
セッションウィンドウの例
直前に到着したレコードのタイムスタンプ + Gap Duration以内
のタイムスタンプが付与されたレコードは、同一セッションに含める
時刻
12:04
レコード
W1
12:07 12:09
※ Gap Durationは5分を想定
61
© 2021 NTT DATA Corporation
セッションウィンドウの例
時刻
12:04
レコード
W1
12:07 12:09 12:17
※ Gap Durationは5分を想定
62
© 2021 NTT DATA Corporation
セッションウィンドウの例
時刻
12:04
レコード
12:07 12:09
W1
12:17
12:14
W2
直前のレコードのタイムスタンプ + Gap
Durationがセッションの終了時刻
直前のレコードのタイムスタンプ + Gap Duration
以降に到着したレコードから新しいセッションを開始
※ Gap Durationは5分を想定
63
© 2021 NTT DATA Corporation
セッションウィンドウの例
W1
時刻
12:04 12:07 12:17 12:22 12:40
レコード
W2 W3
12:09 12:14
・・・
同様のロジックでセッションの開始と終了を判定していく
※ Gap Durationは5分を想定
64
© 2021 NTT DATA Corporation
他にもまだある、Apache Spark 3.2の重要なアップデート
 Push-based shuffle
 Adaptive Query Executionが
デフォルトで有効
 ANSI SQL互換のINTERVAL型の導入
 Scala 2.13対応
 etc
65
© 2021 NTT DATA Corporation
その他にも注目のアップデートが盛り沢山
 このほか主要なアップデートはリリースノートで要チェック
 https://spark.apache.org/releases/spark-release-3-2-0.html
© 2021 NTT DATA Corporation
まとめ
67
© 2021 NTT DATA Corporation
まとめ
 Apache Sparkの基本
 OSSの並列分散処理系
 並列分散処理を身近になるように設計されている
 近年のApache Sparkの動向
 Spark SQLの進化が継続しており、AQEなどのアグレッシブな最適化が
盛り込まれた(Spark 3.2からはデフォルトで有効)
 PySparkユーザビリティ向上のアップデートが多数盛り込まれた
 Apache Spark 3.2
 pandas APIが導入され、既存のpandasユーザが資産を流用したり、
使い慣れたAPIを利用しつつ、処理をスケールアウトさせられる
 Structured Streamingでは、セッションウィンドウの導入により、これま
では難しかったセッションを考慮した集約処理が可能になった
© 2021 NTT DATA Corporation
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Apache Sparkの基本と最新バージョン3.2のアップデート(Open Source Conference 2021 Online/Fukuoka 発表資料)

  • 1.
    © 2021 NTTDATA Corporation Apache Sparkの基本と 最新バージョン3.2のアップデート 2021/11/20 株式会社NTTデータ 技術開発本部 猿田 浩輔 オープンソースカンファレンス2021 Online/Fukuoka
  • 2.
    2 © 2021 NTTDATA Corporation $ whoami  猿田 浩輔  株式会社NTTデータ 技術開発本部  Apache Sparkコミッタ & PMCメンバ  Hadoop/Sparkなど、OSSミドル関連のR&Dや技術支援  普及活動の一環で講演や書籍執筆なども  Twitter: @raspberry1123
  • 3.
    3 © 2021 NTTDATA Corporation 本日のお話 ①Apache Sparkの基本 ②近年のApache Sparkの動向 ③Apache Spark 3.2のアップデート
  • 4.
  • 5.
    5 © 2021 NTTDATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  OSSの並列分散処理系
  • 6.
    6 © 2021 NTTDATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  OSSの並列分散処理系 大量のデータセットを (数100GBs, TBs, PBs, 数千 万, 数億レコード)
  • 7.
    7 © 2021 NTTDATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  OSSの並列分散処理系 複数台のサーバで構成された クラスタを用いて 大量のデータセットを (数100GBs, TBs, PBs, 数千 万, 数億レコード)
  • 8.
    8 © 2021 NTTDATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  OSSの並列分散処理系 複数台のサーバで構成された クラスタを用いて 現実的な時間で処理する (数十分, 数時間のオーダー) 大量のデータセットを (数100GBs, TBs, PBs, 数千 万, 数億レコード)
  • 9.
    9 © 2021 NTTDATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  OSSの並列分散処理系  並列分散処理に関する面倒な制御をSparkが肩代わりしてくれる。  エラーハンドリング  処理の分割やスケジューリング  etc 複数台のサーバで構成された クラスタを用いて 現実的な時間で処理する (数十分, 数時間のオーダー) 大量のデータセットを (数100GBs, TBs, PBs, 数千 万, 数億レコード)
  • 10.
    10 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL さまざまなパラダイムのアナリティクスを可能にする
  • 11.
    11 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL さまざまなパラダイムのアナリティクスを可能にする
  • 12.
    12 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL さまざまなパラダイムのアナリティクスを可能にする
  • 13.
    13 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL さまざまなパラダイムのアナリティクスを可能にする
  • 14.
    14 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL さまざまなパラダイムのアナリティクスを可能にする
  • 15.
    15 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL さまざまなパラダイムのアナリティクスを可能にする 後のスライドでもう少し解説
  • 16.
    16 © 2021 NTTDATA Corporation さまざまなパラダイムのアナリティクスを可能にする Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL
  • 17.
    © 2021 NTTDATA Corporation 近年のApache Sparkの動向
  • 18.
    18 © 2021 NTTDATA Corporation 近年(Spark 3.0以降)のApache Sparkの動向 ①Spark SQLの飛躍的な進化 • 以前からこの傾向は長く継続しているが、近年はアグレッシブな 最適化手法が導入されるなど更に重要な位置付けになってき ている ②PySpark(※)のユーザビリティ向上 • アナリティクスの分野で用いられる事が多いPythonのユーザ向 けに、機能改善やドキュメントの整備が行われている ※ SparkのPythonバインディング
  • 19.
    © 2021 NTTDATA Corporation ① Spark SQLの飛躍的な進化
  • 20.
    20 © 2021 NTTDATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL Sparkのソフトウェアスタックとプログラミング言語
  • 21.
    21 © 2021 NTTDATA Corporation Spark SQLのおさらい - SQLやDSLでテーブルを操作するように処理を記述可能 -  データセットをRDBのテーブルのように操作する手段を提供する  DataFrameと呼ばれるテーブル表現に対してSQLに似たAPIでクエリを発行できる  SQLで処理を記述することもできる  カラムには名前やデータ型を付与でき、見通しの良いデータ処理の記述を可能にしている id,name,date 0,aaa,2020-05-21 1,bbb,2020-06-03 2,ccc,2020-07-08 ・・・ id (Integer) name (String) date (Date) 0 aaa 2020-05-21 1 bbb 2020-06-03 2 ccc 2020-07-08 ・・・ カラム名やデータ型は、明示的な指定だけでなく推論させることが可能 テーブル / DataFrame
  • 22.
    22 © 2021 NTTDATA Corporation Spark SQLのおさらい - シンプルなアプリケーションの例 - where select groupBy avg val df = spark.read.json("/path/to/dataset") val result = df.select("col1", "col2").where("col3 > 0") .groupBy("col1").avg("col2")
  • 23.
    23 © 2021 NTTDATA Corporation Spark SQLのおさらい - クエリから最適化データフローを生成する - クエリエンジン SQL APIを用いたデータ操作 • クエリのパース • 実行プランの生成 • 意味解析 • 最適化 • RDD(Sparkの最もプリミティブなデータ表現)レベルで表現されたデータフロー • 加工の仕方や順序などはクエリエンジンによって最適化済み RDD ロード 保存 RDD 加工 加工 RDD ・・・
  • 24.
    24 © 2021 NTTDATA Corporation Spark SQLのクエリエンジンの進化はめざましい Spark 1.x ルールベース Spark 2.x ルールベース + コストベース
  • 25.
    25 © 2021 NTTDATA Corporation Spark SQLのクエリエンジンの進化はめざましい Spark 1.x ルールベース Spark 2.x ルールベース + コストベース Spark 3.x ルールベース + コストベース + ランタイムベース 処理の途中で得られた、推定ではない実際の情報をもとに、 適応的に実行プランの最適化が行われるようになった Adaptive Query Execution (AQE)
  • 26.
    26 © 2021 NTTDATA Corporation ランタイムの最適化の一例(ジョインアルゴリズムの動的な変更) Scan + Filter Sort Merge Join Scan 対象のデータサイズは100GB Sort Sort テーブルのサイズを考慮して、 Sort Merge Joinが選択されている状態
  • 27.
    27 © 2021 NTTDATA Corporation ランタイムの最適化の一例(ジョインアルゴリズムの動的な変更) Scan + Filter Sort Merge Join Scan 対象のデータサイズは100GB 実際に読んだのは 10MB Sort Sort テーブルのサイズを考慮して、 Sort Merge Joinが選択されている状態
  • 28.
    28 © 2021 NTTDATA Corporation ランタイムの最適化の一例(ジョインアルゴリズムの動的な変更) Scan + Filter Sort Merge Join Scan Scan + Filter Broadcast Hash Join Scan 対象のデータサイズは100GB 実際に読んだのは 10MB Sort Sort 実行時に判明したデータサイズに基づいて、 片方のデータサイズが小さい場合に最適な ジョインアルゴリズムに変更
  • 29.
    29 © 2021 NTTDATA Corporation AQEにより、性能が大幅に向上 https://www.slideshare.net/databricks/deep-dive-into-the-new-features-of-apache-spark-30
  • 30.
    © 2021 NTTDATA Corporation ② PySparkのユーザビリティ向上
  • 31.
    31 © 2021 NTTDATA Corporation Spark 3.0以降でPySpark関連の大幅なアップデートが行われている  昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが 行われている  もともとデータ分析の分野ではPythonが人気  アップデートの一例  Pythonicなエラーメッセージ (Spark 3.0)  ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1) • IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる  公式ドキュメントの大幅な改善 (Spark 3.1) • 目的のコンテンツを探しやすいように構造化 • クイックスタートガイドやサンプルコードも充実 • APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの docstringの可読性が向上した)
  • 32.
    32 © 2021 NTTDATA Corporation Spark 3.0以降でPythonユーザ向けに大幅なアップデートが行われている  昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが 行われている  もともとデータ分析の分野ではPythonが人気  アップデートの一例  Pythonicなエラーメッセージ (Spark 3.0)  ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1) • IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる  公式ドキュメントの大幅な改善 (Spark 3.1) • 目的のコンテンツを探しやすいように構造化 • クイックスタートガイドやサンプルコードも充実 • APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの docstringの可読性が向上した) Pick Up!
  • 33.
    33 © 2021 NTTDATA Corporation ブラッシュアップされたドキュメント https://spark.apache.org/docs/latest/api/python/getting_started/index.html 従来はPySpark向けのドキュ メントが整理されていなかったが、 Spark 3.1以降でまとまったも のが提供されるようになった
  • 34.
    34 © 2021 NTTDATA Corporation ブラッシュアップされたドキュメント https://spark.apache.org/docs/latest/api/python/getting_started/index.html 探したいコンテンツを見つけ やすいように、ナビゲーション が追加された _ インストールガイドやクイック スタートガイドも整備された ライブノートブックで試しに動 かすこともできる
  • 35.
    35 © 2021 NTTDATA Corporation ブラッシュアップされたドキュメント Spark 3.0までのAPIドキュメント Spark 3.1からのAPIドキュメント コンポーネントごとにカテゴライズされ、 目的のAPIが探しやすい https://spark.apache.org/docs/latest/api/python/reference/index.html
  • 36.
    © 2021 NTTDATA Corporation Apache Spark 3.2
  • 37.
    37 © 2021 NTTDATA Corporation Apache Spark 3.2 本セッション実施時点での最新フィーチャーリリース 日本時間で2021/10/19深夜にリリースされた Spark 3.1のリリース以降、1700以上のIssueが解決された 本セッションでは、特に多くのユーザに恩恵がある(と思われる)以下 2点を解説 ①pandas API on Spark ②セッションウィンドウ
  • 38.
    © 2021 NTTDATA Corporation pandas API on Spark
  • 39.
    39 © 2021 NTTDATA Corporation Spark 3.0以降PySpark関連の大幅なアップデートが行われている (再掲)  昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが 行われている  もともとデータ分析の分野ではPythonが人気  アップデートの一例  Pythonicなエラーメッセージ (Spark 3.0)  ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1) • IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる  公式ドキュメントの大幅な改善 (Spark 3.1) • 目的のコンテンツを探しやすいように構造化 • クイックスタートガイドやサンプルコードも充実 • APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの docstringの可読性が向上した)
  • 40.
    40 © 2021 NTTDATA Corporation Pythonユーザ向けのアップデートの一環として、pandas APIのサポートが導入された  昨今はPySparkで分析処理を行うユーザが増えており、その状況を鑑みたアップデートが 行われている  もともとデータ分析の分野ではPythonが人気  アップデートの一例  Pythonicなエラーメッセージ (Spark 3.0)  ビルトイン関数を含むPySparkのAPIがタイプヒントに対応 (Spark 3.1) • IDEの補完機能と組み合わせたり、静的エラー解析が効くようになる  公式ドキュメントの大幅な改善 (Spark 3.1) • 目的のコンテンツを探しやすいように構造化 • クイックスタートガイドやサンプルコードも充実 • APIドキュメントも従来のreSTスタイルからnumpydocスタイルに変更(APIの docstringの可読性が向上した)  pandas APIのサポート (Spark 3.2) Pick Up!
  • 41.
    41 © 2021 NTTDATA Corporation データ分析では人気のpandas。でも計算機1台で処理しきれなくなったら・・・?  pandasはデータ分析で用いられる デファクトスタンダードなライブラリのひとつだが、 単一の計算機で処理しきれないデータを扱う場合 pandas以外の方法を検討する必要があった  PySparkは選択肢のひとつとなり得るが、既存の資産を流用できなかったり、 従来pandasを利用してきたユーザにとって使いやすいAPIではなかった  そこで、Koalasと呼ばれるプロジェクトが立ち上がった
  • 42.
    42 © 2021 NTTDATA Corporation What is Koalas?  Koalas  pandas互換のAPIで、Sparkのアプリケーションを 記述可能にする  pandasユーザが使い慣れたAPIそのままに、処理を スケールアウト可能  https://github.com/databricks/koalas  類似プロダクトのDaskと比較して、5倍程度高速という結果も  https://www.slideshare.net/databricks/koalas-how-well- does-koalas-work  Spark 3.2からは、KoalasのコードがSparkにポートされ、Sparkの標準機 能として使えるようになる  https://issues.apache.org/jira/browse/SPARK-34849
  • 43.
    43 © 2021 NTTDATA Corporation pandas API on Sparkを用いたSparkアプリケーション記述例 import pandas as pd df = pd.read_csv(file) df['x'] = df.y * df.z df.describe() df.plot.line(...) import databricks.koalas as ks df = ks.read_csv(file) df['x'] = df.y * df.z df.describe() df.plot.line(...) Pandas Koalas
  • 44.
    44 © 2021 NTTDATA Corporation pandas API on Sparkを用いたSparkアプリケーション記述例 import pandas as pd df = pd.read_csv(file) df['x'] = df.y * df.z df.describe() df.plot.line(...) import databricks.koalas as ks df = ks.read_csv(file) df['x'] = df.y * df.z df.describe() df.plot.line(...) import pyspark.pandas as ps df = ps.read_csv(file) df['x'] = df.y * df.z df.describe() df.plot.line(...) Pandas Koalas pandas API on Spark(Spark 3.2)
  • 45.
    45 © 2021 NTTDATA Corporation プロットもサポート 引用: https://www.slideshare.net/databricks/deep-dive-into-the-new-features-of-apache-spark-31 PandasやKoalasで実装済みのプロット機能を、Spark 3.2でも利用可能
  • 46.
    46 © 2021 NTTDATA Corporation まずは動かして体感すべし!  pip install pysparkで簡単にインストール可能  Live Notebookで試しに動かしてみるのもOK • https://mybinder.org/v2/gh/sarutak/spark/d168315a18?filepath =python%2Fdocs%2Fsource%2Fgetting_started%2Fquickstart_p s.ipynb
  • 47.
    © 2021 NTTDATA Corporation セッションウィンドウ
  • 48.
    48 © 2021 NTTDATA Corporation Structured Streamingのおさらい  Spark SQLをベースに設計された ストリーム処理フレームワーク  Spark Streamingと異なり、 クエリエンジンによる最適化の恩恵が受けられる Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理)
  • 49.
    49 © 2021 NTTDATA Corporation Structured Streamingのおさらい (データ処理モデル)  ストリームデータをDataFrameのレコードとして扱う  到着したレコードをDataFrameに追記し、そのDataFrameに対して 処理を行う https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
  • 50.
    50 © 2021 NTTDATA Corporation Structured Streamingのおさらい (データ処理モデル) https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html ストリームデータを DataFrameの レコードとして扱う マイクロバッチを 定期的に起動し、 DataFrameに対して クエリを発行する 結果を出力する DataFrameに 対する数10ms - 数100msで完 了するマイクロ バッチを連続的 に実行することで ストリーム処理を 実現する
  • 51.
    51 © 2021 NTTDATA Corporation Structured Streamingのおさらい (データ処理モデル) https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html ストリームデータを DataFrameの レコードとして扱う マイクロバッチを 定期的に起動し、 DataFrameに対して クエリを発行する 結果を出力する DataFrameに 対する数10ms - 数100msで完 了するマイクロ バッチを連続的 に実行することで ストリーム処理を 実現する 1回目
  • 52.
    52 © 2021 NTTDATA Corporation Structured Streamingのおさらい (データ処理モデル) https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html ストリームデータを DataFrameの レコードとして扱う マイクロバッチを 定期的に起動し、 DataFrameに対して クエリを発行する 結果を出力する DataFrameに 対する数10ms - 数100msで完 了するマイクロ バッチを連続的 に実行することで ストリーム処理を 実現する 2回目
  • 53.
    53 © 2021 NTTDATA Corporation Structured Streamingのおさらい (データ処理モデル) https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html ストリームデータを DataFrameの レコードとして扱う マイクロバッチを 定期的に起動し、 DataFrameに対して クエリを発行する 結果を出力する DataFrameに 対する数10ms - 数100msで完 了するマイクロ バッチを連続的 に実行することで ストリーム処理を 実現する 3回目
  • 54.
    54 © 2021 NTTDATA Corporation 従来からサポートされているウィンドウ処理(タンブリングウィンドウ) W1 W2 W3 W4 時刻 12:00 12:05 12:10 12:15 12:20 レコード • 固定サイズの各タイムウィンドウごとに集約処理を行う • レコードがどのウィンドウに属するかは、レコードに付与さ れたタイムスタンプに基づいて決める • 時間帯ごとの集計などに用いる • タイムウィンドウごとにレコードの数を数える場合、上記 の例では右のような結果が得られる タイムウィンドウ レコード数 12:00 - 12:05 2 12:05 - 12:10 1 12:10 - 12:15 3 12:15 - 12:20 2
  • 55.
    55 © 2021 NTTDATA Corporation 従来からサポートされているウィンドウ処理 (スライディングウィンドウ) W1 時刻 12:00 12:05 12:10 12:15 12:20 レコード W2 W3 W4 12:25 タイムウィンドウ レコード数 12:00 - 12:10 3 12:05 - 12:15 2 12:10 - 12:20 4 12:15 - 12:25 5 • 固定サイズの各タイムウィンドウが重なるようにずらしな がら集約処理を行う • 時間変化を考慮した集計に用いる • タイムウィンドウごとにレコードの数を数える場合、上記 の例では右のような結果が得られる
  • 56.
    56 © 2021 NTTDATA Corporation “セッション”を考慮した集約処理はこれまで難しかった  ここで言うセッションとは、イベント同士を連続性のあるものとみなす時間範 囲のこと  時系列で隣接するイベント同士が一定時間以内に発生していたら、そ れらは同一セッションとみなすのが典型的な例  例えばWebサイトにアクセスして、滞在している時間範囲をセッションと見な して分析に役立てるケースもある  アクセスログをイベントとして扱い、ログ間のタイムスタンプから連続性を 判定する 時刻 イベント セッション1 セッション2 セッション3 セッション4
  • 57.
    57 © 2021 NTTDATA Corporation “セッション”を考慮した集約処理はこれまで難しかった  従来のウィンドウ処理では不十分  セッションの開始と終了を識別する仕組みが 備わっていない  ウィンドウサイズが固定  Spark 3.2からはセッションウィンドウがサポートされた  Gap Durationで定義される時間に基づいて、セッションの開始と終 了を識別する  セッションごとに可変なタイムウィンドウを生成できる
  • 58.
    58 © 2021 NTTDATA Corporation セッションウィンドウの例 時刻 12:04 レコード ※ Gap Durationは5分を想定
  • 59.
    59 © 2021 NTTDATA Corporation セッションウィンドウの例 時刻 12:04 W1 最初に到着したレコードのタイムスタンプから、新しいセッションが開始 レコード ※ Gap Durationは5分を想定
  • 60.
    60 © 2021 NTTDATA Corporation セッションウィンドウの例 直前に到着したレコードのタイムスタンプ + Gap Duration以内 のタイムスタンプが付与されたレコードは、同一セッションに含める 時刻 12:04 レコード W1 12:07 12:09 ※ Gap Durationは5分を想定
  • 61.
    61 © 2021 NTTDATA Corporation セッションウィンドウの例 時刻 12:04 レコード W1 12:07 12:09 12:17 ※ Gap Durationは5分を想定
  • 62.
    62 © 2021 NTTDATA Corporation セッションウィンドウの例 時刻 12:04 レコード 12:07 12:09 W1 12:17 12:14 W2 直前のレコードのタイムスタンプ + Gap Durationがセッションの終了時刻 直前のレコードのタイムスタンプ + Gap Duration 以降に到着したレコードから新しいセッションを開始 ※ Gap Durationは5分を想定
  • 63.
    63 © 2021 NTTDATA Corporation セッションウィンドウの例 W1 時刻 12:04 12:07 12:17 12:22 12:40 レコード W2 W3 12:09 12:14 ・・・ 同様のロジックでセッションの開始と終了を判定していく ※ Gap Durationは5分を想定
  • 64.
    64 © 2021 NTTDATA Corporation 他にもまだある、Apache Spark 3.2の重要なアップデート  Push-based shuffle  Adaptive Query Executionが デフォルトで有効  ANSI SQL互換のINTERVAL型の導入  Scala 2.13対応  etc
  • 65.
    65 © 2021 NTTDATA Corporation その他にも注目のアップデートが盛り沢山  このほか主要なアップデートはリリースノートで要チェック  https://spark.apache.org/releases/spark-release-3-2-0.html
  • 66.
    © 2021 NTTDATA Corporation まとめ
  • 67.
    67 © 2021 NTTDATA Corporation まとめ  Apache Sparkの基本  OSSの並列分散処理系  並列分散処理を身近になるように設計されている  近年のApache Sparkの動向  Spark SQLの進化が継続しており、AQEなどのアグレッシブな最適化が 盛り込まれた(Spark 3.2からはデフォルトで有効)  PySparkユーザビリティ向上のアップデートが多数盛り込まれた  Apache Spark 3.2  pandas APIが導入され、既存のpandasユーザが資産を流用したり、 使い慣れたAPIを利用しつつ、処理をスケールアウトさせられる  Structured Streamingでは、セッションウィンドウの導入により、これま では難しかったセッションを考慮した集約処理が可能になった
  • 68.
    © 2021 NTTDATA Corporation 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Editor's Notes

  • #2 はい、皆さんこんにちは。わたくし、NTTデータの猿田と申します。 このセッションでは、Apache Sparkという、大量のデータを高速に処理するのに使えるOSSの基本と、最新バージョン3.2のアップデートについてご紹介します。 す。