© 2019 NTT DATA Corporation
2019/03/19
株式会社NTTデータ 技術開発本部
猿田 浩輔
Apache Spark 2.4 and 3.0 - What's Next? -
© 2019 NTT DATA Corporation 2
 猿田 浩輔
 株式会社NTTデータ 技術開発本部
 Apache Sparkコミッタ (2015年から)
 Hadoop/SparkなどOSS並列分散処理系のテクニカルサ
ポートに従事してきた
 最近はPersistent Memoryなど新しいトレンドのハードウェア
の活用に興味
$ whoami
© 2019 NTT DATA Corporation 3
 オープンソースの並列分散処理系
 並列分散処理の面倒な部分は処理系が解決してくれる
 障害時のリカバリ
 タスクの分割やスケジューリング
 etc
What is Apache ?
大量のデータを たくさんのサーバを並べて
並列分散処理し、
現実的な時間(数分~数時間)で
目的の処理結果を得る
© 2019 NTT DATA Corporation 4
Unified Analytics Engine
Spark Core
(Sparkのデータ処理エンジンや基本的なAPIなどを含む)
Spark Streaming
(ストリーム処理)
Spark SQL
(クエリ処理)
Structured
Streaming
(ストリーム処理)
GraphX
(グラフ処理)
MLlib / Spark ML
(機械学習)
SQL
© 2019 NTT DATA Corporation 5
 近年はSpark SQLを中心とした処理系になってきており、パフォー
マンスや利便性が良くなった
 宣言的なAPIやSQL/HiveQLで処理が書ける
 オプティマイザによる最適化の恩恵が受けられる
 開発言語による性能差が出にくい
 機械学習、ストリーム処理向けのライブラリも、Spark SQLのデー
タ構造であるDataFrame / Datasetをベースとしたものが整備され
てきた
 MLlib (spark.mlパッケージ)
 Structured Streaming
RDDからDataFrame / Datasetを中心とした処理系へ
// 宣言的なAPIでクエリを記述する例
// DataFrame (テーブル上のデータ構造)にParquetフォーマットのファイルをロード
val df = spark.read.parquet(“/path/to/file”)
// 港区在住の人の平均給与を求めるクエリ
df.select($”salary”).where($”residence” === “港区”).avg()
© 2019 NTT DATA Corporation 6
 Kubernetesサポート (Spark 2.4 / 3.0)
 Project Hydrogen
 Barrier Execution Mode (Spark 2.4)
 Accelerator Aware Scheduling (Spark 3.0)
 Spark Graph (Spark 3.0)
本日主にご紹介する新機能
© 2019 NTT DATA Corporation 7
Kubernetesサポート
© 2019 NTT DATA Corporation 8
 Spark 2.3(ひとつ前のフィーチャーリリース)からKubernetes
がサポートされた
 2.3では機能不足だったSparkも徐々に完成度を上げている
Spark on Kubernetes
Spark Core
(Sparkのデータ処理エンジンや基本的なAPIなどを含む)
Spark Streaming
(ストリーム処理ラ
イブラリ)
Spark SQL
(クエリでデータ処理を記述する
ためのライブラリ)
Structured
Streaming
(ストリーム処理ラ
イブラリ)
GraphX
(グラフ処理処理ラ
イブラリ)
MLlib / Spark ML
(機械学習ライブラリ)
YARN Standalone Mesos Kubernetes
© 2019 NTT DATA Corporation 9
 Spark 2.4
 サポートする開発言語の強化
• PySpark対応(SPARK-23984)
• SparkR対応(SPARK-24433)
 クライアントモードでの動作(SPARK-23146)
• インタラクティブシェルやノートブックと組み合わせて利用できるように
なった
 Spark 3.0
 Kerberosサポート(SPARK-23257) 大体完了
• KerberizedなHDFSやHBaseなどと連携が可能に
 Driver/Executor Pod向けのユーザ定義テンプレート マージ済み
• Kubernetesらしく、宣言的に設定できる(SPARK-24434)
 ダイナミックリソースアロケーション(SPARK-24432) 3.0に向けて議論中
 External Shuffle Service(SPARK-25299) 3.0に向けて議論中
Kubernetesサポート in Spark 2.4 and 3.0
© 2019 NTT DATA Corporation 10
Project Hydrogen
© 2019 NTT DATA Corporation 11
 SparkにおけるAI(特にディープラーニング)を活用したユース
ケースをカバーするためのサブプロジェクト
 Sparkはこれまでもディープラーニングのユースケースで活用
されてきたが、浮き彫りになった弱点を強化する取り組み
 大きく3つの取り組みから成り立っている
Project Hydrogen
Barrier Execution
Mode
Optimized Data
Exchange
Accelerator Aware
Scheduling
2.4で基本部分が実装済み 3.0での導入を目標に開発
が進められている
© 2019 NTT DATA Corporation 12
 Sparkでは、ユーザが記述した処理から「ステージ」や「タス
ク」と呼ばれる処理単位が生成される
 複数のExecutorが異なるタスクを処理することでクラスタ全
体で分散処理が行われる
Sparkの処理単位(おさらい)
タスク
タスク
タスク
タスク
タスク
ステージ1 シャッフル ステージ2 シャッフル ステージ3
タスク
タスク
タスク
タスク
© 2019 NTT DATA Corporation 13
 Executorへのタスクの割り当ては、Sparkのスケジューラが
決定する
 ステージ間は依存関係になっており、先行するステージのタ
スクがすべて完了すると後続のステージのスケジューリング
が始まる
タスクのスケジューリング(おさらい)
タスク
タスク
タスク
タスク
タスク
ステージ1 シャッフル ステージ2 シャッフル ステージ3
タスク
タスク
タスク
タスク
ステージ1のタスクがすべて完了したら、
ステージ2のタスクのスケジューリングが始まる
© 2019 NTT DATA Corporation 14
 従来からのタスクスケジューリングは、データローカリティや
Executorの空コア数などに基づいて行われる
 コアを遊ばせないようにタスクがスケジューリングされる
 同じステージに含まれるタスクが一斉にスケジューリン
グされるとは限らない
 あるタスクが失敗した場合、当該タスクのみリトライされる
 ステージ内の他のタスクは影響を受けない
タスクのスケジューリング(おさらい)
タスク
タスク
タスク
進行中のタスク
スケジューリング
待ちのタスク
タスク
タスク
タスク
×
完了
完了
リトライが必要なのは
失敗したタスクだけ
© 2019 NTT DATA Corporation 15
 従来のスケジューリング方式は、各タスクが独立に動作する
前提になっており、分散ディープラーニングなどで必要とされ
る、複数のタスクの協調動作の実現が難しい
 協調動作が必要なタスクを同時にスケジューリング
 協調動作が必要なタスクのいずれかが失敗したら、他の
タスクもまとめて再スケジューリング
 スケジューリングのほかに、タスク間で同期する仕組み
もない
分散ディープラーニングにおける従来のスケジューリングの課題
タスク
タスク
タスク
進行中のタスク
スケジューリング
待ちのタスク
タスク
タスク
タスク
×
完了
完了
リトライが必要なのは
失敗したタスクだけ
© 2019 NTT DATA Corporation 16
 Barrier Execution Modeは複数のタスクの協調動作を可能
にする、新しいスケジューリング方式
 協調動作が必要なタスクが同時にExecutorに、をまとめ
てスケジューリング可能
• Executorのコアに空があっても、同時に動作が必要
なタスク数に満たなければスケジューリングしない
 協調動作が必要なタスクのいずれかが失敗した場合は、
同じステージのすべてのタスクをリトライ
 タスク間での同期のメカニズムも実装されている
 従来のスケジューリング方式と組み合わせて利用可能
Barrier Execution Mode
© 2019 NTT DATA Corporation 17
 RDD#barrierメソッドで、Barrier Execution Modeでのスケ
ジューリング対象を設定できる
 BarrierTaskContext#barrierメソッドで、タスク間の同期点を設定で
きる
 具体的な通信処理ロジックなどはDLフレームワーク側やDL
アプリケーション開発者が実装する必要がある
 Barrier Execution Modeは協調を可能にする仕掛けを提供
するだけ
Barrier Execution Mode
rdd.barrier().mapPartitions() { iter =>
val context = BarrierTaskContext.get() // バリアタスクコンテキストを取得
<何か処理>
context.barrier() // ここでタスク間の待ち合わせ
© 2019 NTT DATA Corporation 18
 3.0への導入に向けて、Project Hydrogenの中では最近議
論が活発
 Standalone / YARN / Kubernetes向けに導入が検討されて
いる
 Hadoop 3.1.2からYARNがGPUをサポート(管理し、払
い出す対象のリソースとして認識)。
 クラスタマネージャの機能と連携しながら、Spark側のスケ
ジューラもアクセラレータリソースが払い出されたExecutorへ
のタスクのスケジューリングを行う
 例えば、どのExecutor上でどのくらいのアクセラレータが
利用できるかで、タスクのスケジューリングを制御する必
要がある
 3.0ではGPU向けの機能が実装される見込み
Accelerator Aware Scheduling
© 2019 NTT DATA Corporation 19
Spark Graph
© 2019 NTT DATA Corporation 20
 これまでもSpark向けに様々なグラフ処理ライブラリがあった
 GraphX
 GraphFrames
 Spark GraphはGraphXやGraph Frameの課題を解決する
新しいグラフ処理ライブラリ
 3.0への導入に向けて議論が進められている
Spark向けのグラフ処理ライブラリ
© 2019 NTT DATA Corporation 21
 GraphX
 RDDベース
 Scala APIしか提供されていない
 あまりメンテナンスされていない
 GraphFrames
 DataFrameベース
 SparkPackagesで提供されるサードパーティパッケージ
 エッジやノードのセマンティクスが弱く、単純なグラフマッ
チングしか行えない
従来のSpark向けのグラフライブラリの問題点
© 2019 NTT DATA Corporation 22
 GraphFramesではノード集合やエッジ集合をDataFrameで表現する
 各レコードがノードやエッジに対応する
 DataFrameのレコードとして表現されるため、ノードやエッジに属性
が付与できる
 ただし、ノードやエッジそのものに「型」は定義できない
GraphFramesのデータモデル
太郎 次郎
東京 NYC
姉妹都市
居住
兄弟
居住
駐在経験
• 右のグラフで緑のノードは場所
を表し、水色のノードは人を表
す(型が違う)。
• エッジについても色ごとに種類
が異なる。
• GraphFramesではエッジやノード
の「型」を設定できないため、種
類の違いを区別できない
© 2019 NTT DATA Corporation 23
 GraphFramesではMotifsと呼ばれる簡易的なクエリでグラフマッチングが
行える
 ただし、エッジやノードに型が定義できないため、形状に基づくマッチング
しか行えない
 属性(例えばノードに関連付けられた人の名前など)を考慮したマッチング
もサポートされていない
 Motifsでマッチした結果はDataFrameとして得られるので、複雑なマッチ
ングを行う場合はDataFrameのオペレーションと併用する
GraphFramesのグラフマッチング
val motifs = g.find(“(node1)-[edge]->(node2)”)
val filtered = motifs.filter(“edge.rel = ‘居住’”)
例えば、先述のグラフで居住者と居住地を表す部分グラフを抽出したい場合
は、Motifsでマッチングした後にエッジに付与された属性が「居住」であるもの
をフィルタするひつようがある。
© 2019 NTT DATA Corporation 24
 Property Graphと呼ばれるデータモデルを扱う
 エッジやノードに「属性」だけでなく「型」が設定できる
 Cypherによるグラフマッチングが可能
 Property Graphに対して、型や属性に基づくマッチングが可能
 マッチしたエッジやノードだけでなく、付与された属性もDataFrameとして
返却可能
Spark Graph
val result: CypherResult = graph.cypher(
"""|MATCH (person: 人)-[rel: 居住]->(loc: 都市)
"""|RETURN person.name, loc.name""").stripMargin
result.df.show()
| person.name | loc.name |
| 太郎 | 東京 |
| 次郎 | 東京 |
Property Graphに対するCypherの適用例
© 2019 NTT DATA Corporation 25
その他のトピック
© 2019 NTT DATA Corporation 26
 Pandas UDFの強化(ユーザ定義集約関数やWindow関数が定義
できるようになった)
 ビルトイン関数/高階関数の拡充
 2.4では、主に配列やマップなど、複雑なデータ型を対象とし
た29個のビルトイン関数を追加
 3.0でもマップ向けの高階関数が追加される見通し
 サポートするデータソースの追加(Avro, 画像ファイル)
 Structured StreamingへForeachBatchシンクの追加
 レコード単位ではなく、DataFrame単位でのオペレーションが
記述できる(Spark StreamingのforeachRDDと似ている)
 複数のデータストアへの出力などに使える
ほかにもまだまだ・・・ in Spark 2.4
© 2019 NTT DATA Corporation 27
 Java11サポート
 既にmasterブランチ/3.0ブランチにはマージ済み
 Scala 2.12サポート
 Spark 2.4からすでにScala 2.12が利用できるが、Spark 3.0
ではScala 2.12がデフォルトになる予定
 Hadoop 3系サポート
 Sparkが依存しているHiveのバージョンも上げなければならな
い
 依存するHiveのバージョンを1.2.1から2.3.4にアップグレード
ほかにもまだまだ・・・ in Spark 3.0
© 2019 NTT DATA Corporation

Apache Spark 2.4 and 3.0 What's Next?

  • 1.
    © 2019 NTTDATA Corporation 2019/03/19 株式会社NTTデータ 技術開発本部 猿田 浩輔 Apache Spark 2.4 and 3.0 - What's Next? -
  • 2.
    © 2019 NTTDATA Corporation 2  猿田 浩輔  株式会社NTTデータ 技術開発本部  Apache Sparkコミッタ (2015年から)  Hadoop/SparkなどOSS並列分散処理系のテクニカルサ ポートに従事してきた  最近はPersistent Memoryなど新しいトレンドのハードウェア の活用に興味 $ whoami
  • 3.
    © 2019 NTTDATA Corporation 3  オープンソースの並列分散処理系  並列分散処理の面倒な部分は処理系が解決してくれる  障害時のリカバリ  タスクの分割やスケジューリング  etc What is Apache ? 大量のデータを たくさんのサーバを並べて 並列分散処理し、 現実的な時間(数分~数時間)で 目的の処理結果を得る
  • 4.
    © 2019 NTTDATA Corporation 4 Unified Analytics Engine Spark Core (Sparkのデータ処理エンジンや基本的なAPIなどを含む) Spark Streaming (ストリーム処理) Spark SQL (クエリ処理) Structured Streaming (ストリーム処理) GraphX (グラフ処理) MLlib / Spark ML (機械学習) SQL
  • 5.
    © 2019 NTTDATA Corporation 5  近年はSpark SQLを中心とした処理系になってきており、パフォー マンスや利便性が良くなった  宣言的なAPIやSQL/HiveQLで処理が書ける  オプティマイザによる最適化の恩恵が受けられる  開発言語による性能差が出にくい  機械学習、ストリーム処理向けのライブラリも、Spark SQLのデー タ構造であるDataFrame / Datasetをベースとしたものが整備され てきた  MLlib (spark.mlパッケージ)  Structured Streaming RDDからDataFrame / Datasetを中心とした処理系へ // 宣言的なAPIでクエリを記述する例 // DataFrame (テーブル上のデータ構造)にParquetフォーマットのファイルをロード val df = spark.read.parquet(“/path/to/file”) // 港区在住の人の平均給与を求めるクエリ df.select($”salary”).where($”residence” === “港区”).avg()
  • 6.
    © 2019 NTTDATA Corporation 6  Kubernetesサポート (Spark 2.4 / 3.0)  Project Hydrogen  Barrier Execution Mode (Spark 2.4)  Accelerator Aware Scheduling (Spark 3.0)  Spark Graph (Spark 3.0) 本日主にご紹介する新機能
  • 7.
    © 2019 NTTDATA Corporation 7 Kubernetesサポート
  • 8.
    © 2019 NTTDATA Corporation 8  Spark 2.3(ひとつ前のフィーチャーリリース)からKubernetes がサポートされた  2.3では機能不足だったSparkも徐々に完成度を上げている Spark on Kubernetes Spark Core (Sparkのデータ処理エンジンや基本的なAPIなどを含む) Spark Streaming (ストリーム処理ラ イブラリ) Spark SQL (クエリでデータ処理を記述する ためのライブラリ) Structured Streaming (ストリーム処理ラ イブラリ) GraphX (グラフ処理処理ラ イブラリ) MLlib / Spark ML (機械学習ライブラリ) YARN Standalone Mesos Kubernetes
  • 9.
    © 2019 NTTDATA Corporation 9  Spark 2.4  サポートする開発言語の強化 • PySpark対応(SPARK-23984) • SparkR対応(SPARK-24433)  クライアントモードでの動作(SPARK-23146) • インタラクティブシェルやノートブックと組み合わせて利用できるように なった  Spark 3.0  Kerberosサポート(SPARK-23257) 大体完了 • KerberizedなHDFSやHBaseなどと連携が可能に  Driver/Executor Pod向けのユーザ定義テンプレート マージ済み • Kubernetesらしく、宣言的に設定できる(SPARK-24434)  ダイナミックリソースアロケーション(SPARK-24432) 3.0に向けて議論中  External Shuffle Service(SPARK-25299) 3.0に向けて議論中 Kubernetesサポート in Spark 2.4 and 3.0
  • 10.
    © 2019 NTTDATA Corporation 10 Project Hydrogen
  • 11.
    © 2019 NTTDATA Corporation 11  SparkにおけるAI(特にディープラーニング)を活用したユース ケースをカバーするためのサブプロジェクト  Sparkはこれまでもディープラーニングのユースケースで活用 されてきたが、浮き彫りになった弱点を強化する取り組み  大きく3つの取り組みから成り立っている Project Hydrogen Barrier Execution Mode Optimized Data Exchange Accelerator Aware Scheduling 2.4で基本部分が実装済み 3.0での導入を目標に開発 が進められている
  • 12.
    © 2019 NTTDATA Corporation 12  Sparkでは、ユーザが記述した処理から「ステージ」や「タス ク」と呼ばれる処理単位が生成される  複数のExecutorが異なるタスクを処理することでクラスタ全 体で分散処理が行われる Sparkの処理単位(おさらい) タスク タスク タスク タスク タスク ステージ1 シャッフル ステージ2 シャッフル ステージ3 タスク タスク タスク タスク
  • 13.
    © 2019 NTTDATA Corporation 13  Executorへのタスクの割り当ては、Sparkのスケジューラが 決定する  ステージ間は依存関係になっており、先行するステージのタ スクがすべて完了すると後続のステージのスケジューリング が始まる タスクのスケジューリング(おさらい) タスク タスク タスク タスク タスク ステージ1 シャッフル ステージ2 シャッフル ステージ3 タスク タスク タスク タスク ステージ1のタスクがすべて完了したら、 ステージ2のタスクのスケジューリングが始まる
  • 14.
    © 2019 NTTDATA Corporation 14  従来からのタスクスケジューリングは、データローカリティや Executorの空コア数などに基づいて行われる  コアを遊ばせないようにタスクがスケジューリングされる  同じステージに含まれるタスクが一斉にスケジューリン グされるとは限らない  あるタスクが失敗した場合、当該タスクのみリトライされる  ステージ内の他のタスクは影響を受けない タスクのスケジューリング(おさらい) タスク タスク タスク 進行中のタスク スケジューリング 待ちのタスク タスク タスク タスク × 完了 完了 リトライが必要なのは 失敗したタスクだけ
  • 15.
    © 2019 NTTDATA Corporation 15  従来のスケジューリング方式は、各タスクが独立に動作する 前提になっており、分散ディープラーニングなどで必要とされ る、複数のタスクの協調動作の実現が難しい  協調動作が必要なタスクを同時にスケジューリング  協調動作が必要なタスクのいずれかが失敗したら、他の タスクもまとめて再スケジューリング  スケジューリングのほかに、タスク間で同期する仕組み もない 分散ディープラーニングにおける従来のスケジューリングの課題 タスク タスク タスク 進行中のタスク スケジューリング 待ちのタスク タスク タスク タスク × 完了 完了 リトライが必要なのは 失敗したタスクだけ
  • 16.
    © 2019 NTTDATA Corporation 16  Barrier Execution Modeは複数のタスクの協調動作を可能 にする、新しいスケジューリング方式  協調動作が必要なタスクが同時にExecutorに、をまとめ てスケジューリング可能 • Executorのコアに空があっても、同時に動作が必要 なタスク数に満たなければスケジューリングしない  協調動作が必要なタスクのいずれかが失敗した場合は、 同じステージのすべてのタスクをリトライ  タスク間での同期のメカニズムも実装されている  従来のスケジューリング方式と組み合わせて利用可能 Barrier Execution Mode
  • 17.
    © 2019 NTTDATA Corporation 17  RDD#barrierメソッドで、Barrier Execution Modeでのスケ ジューリング対象を設定できる  BarrierTaskContext#barrierメソッドで、タスク間の同期点を設定で きる  具体的な通信処理ロジックなどはDLフレームワーク側やDL アプリケーション開発者が実装する必要がある  Barrier Execution Modeは協調を可能にする仕掛けを提供 するだけ Barrier Execution Mode rdd.barrier().mapPartitions() { iter => val context = BarrierTaskContext.get() // バリアタスクコンテキストを取得 <何か処理> context.barrier() // ここでタスク間の待ち合わせ
  • 18.
    © 2019 NTTDATA Corporation 18  3.0への導入に向けて、Project Hydrogenの中では最近議 論が活発  Standalone / YARN / Kubernetes向けに導入が検討されて いる  Hadoop 3.1.2からYARNがGPUをサポート(管理し、払 い出す対象のリソースとして認識)。  クラスタマネージャの機能と連携しながら、Spark側のスケ ジューラもアクセラレータリソースが払い出されたExecutorへ のタスクのスケジューリングを行う  例えば、どのExecutor上でどのくらいのアクセラレータが 利用できるかで、タスクのスケジューリングを制御する必 要がある  3.0ではGPU向けの機能が実装される見込み Accelerator Aware Scheduling
  • 19.
    © 2019 NTTDATA Corporation 19 Spark Graph
  • 20.
    © 2019 NTTDATA Corporation 20  これまでもSpark向けに様々なグラフ処理ライブラリがあった  GraphX  GraphFrames  Spark GraphはGraphXやGraph Frameの課題を解決する 新しいグラフ処理ライブラリ  3.0への導入に向けて議論が進められている Spark向けのグラフ処理ライブラリ
  • 21.
    © 2019 NTTDATA Corporation 21  GraphX  RDDベース  Scala APIしか提供されていない  あまりメンテナンスされていない  GraphFrames  DataFrameベース  SparkPackagesで提供されるサードパーティパッケージ  エッジやノードのセマンティクスが弱く、単純なグラフマッ チングしか行えない 従来のSpark向けのグラフライブラリの問題点
  • 22.
    © 2019 NTTDATA Corporation 22  GraphFramesではノード集合やエッジ集合をDataFrameで表現する  各レコードがノードやエッジに対応する  DataFrameのレコードとして表現されるため、ノードやエッジに属性 が付与できる  ただし、ノードやエッジそのものに「型」は定義できない GraphFramesのデータモデル 太郎 次郎 東京 NYC 姉妹都市 居住 兄弟 居住 駐在経験 • 右のグラフで緑のノードは場所 を表し、水色のノードは人を表 す(型が違う)。 • エッジについても色ごとに種類 が異なる。 • GraphFramesではエッジやノード の「型」を設定できないため、種 類の違いを区別できない
  • 23.
    © 2019 NTTDATA Corporation 23  GraphFramesではMotifsと呼ばれる簡易的なクエリでグラフマッチングが 行える  ただし、エッジやノードに型が定義できないため、形状に基づくマッチング しか行えない  属性(例えばノードに関連付けられた人の名前など)を考慮したマッチング もサポートされていない  Motifsでマッチした結果はDataFrameとして得られるので、複雑なマッチ ングを行う場合はDataFrameのオペレーションと併用する GraphFramesのグラフマッチング val motifs = g.find(“(node1)-[edge]->(node2)”) val filtered = motifs.filter(“edge.rel = ‘居住’”) 例えば、先述のグラフで居住者と居住地を表す部分グラフを抽出したい場合 は、Motifsでマッチングした後にエッジに付与された属性が「居住」であるもの をフィルタするひつようがある。
  • 24.
    © 2019 NTTDATA Corporation 24  Property Graphと呼ばれるデータモデルを扱う  エッジやノードに「属性」だけでなく「型」が設定できる  Cypherによるグラフマッチングが可能  Property Graphに対して、型や属性に基づくマッチングが可能  マッチしたエッジやノードだけでなく、付与された属性もDataFrameとして 返却可能 Spark Graph val result: CypherResult = graph.cypher( """|MATCH (person: 人)-[rel: 居住]->(loc: 都市) """|RETURN person.name, loc.name""").stripMargin result.df.show() | person.name | loc.name | | 太郎 | 東京 | | 次郎 | 東京 | Property Graphに対するCypherの適用例
  • 25.
    © 2019 NTTDATA Corporation 25 その他のトピック
  • 26.
    © 2019 NTTDATA Corporation 26  Pandas UDFの強化(ユーザ定義集約関数やWindow関数が定義 できるようになった)  ビルトイン関数/高階関数の拡充  2.4では、主に配列やマップなど、複雑なデータ型を対象とし た29個のビルトイン関数を追加  3.0でもマップ向けの高階関数が追加される見通し  サポートするデータソースの追加(Avro, 画像ファイル)  Structured StreamingへForeachBatchシンクの追加  レコード単位ではなく、DataFrame単位でのオペレーションが 記述できる(Spark StreamingのforeachRDDと似ている)  複数のデータストアへの出力などに使える ほかにもまだまだ・・・ in Spark 2.4
  • 27.
    © 2019 NTTDATA Corporation 27  Java11サポート  既にmasterブランチ/3.0ブランチにはマージ済み  Scala 2.12サポート  Spark 2.4からすでにScala 2.12が利用できるが、Spark 3.0 ではScala 2.12がデフォルトになる予定  Hadoop 3系サポート  Sparkが依存しているHiveのバージョンも上げなければならな い  依存するHiveのバージョンを1.2.1から2.3.4にアップグレード ほかにもまだまだ・・・ in Spark 3.0
  • 28.
    © 2019 NTTDATA Corporation

Editor's Notes

  • #2 みなさん、こんばんは。 今日私からは、Apache Sparkの現時点での最新フィーチャーリリースである2.4と、 そして今年リリースが期待される3.0の新機能をいくつかご紹介したいと思います。