SlideShare a Scribd company logo
1 of 69
© 2020 NTT DATA Corporation
大量のデータ処理や分析に使えるOSS Apache Spark入門
- Open Source Conference2020 Online/Fukuokaエディ
ション -
2020/11/28
株式会社NTTデータ 技術開発本部
猿田 浩輔
オープンソースカンファレンス2020
Online/Fukuoka
2© 2020 NTT DATA Corporation
$ whoami
 猿田 浩輔
 株式会社NTTデータ 技術開発本部
 シニア・ソフトウェアエンジニア / Apache Sparkコミッタ
 Hadoop/Sparkなど、OSSミドル関連のR&Dや技術支援
 普及活動の一環で講演や書籍執筆なども
 Twitter: @raspberry1123
3© 2020 NTT DATA Corporation
本日のお話
 Apache Sparkの基本 + α
 Sparkとは何か
 Sparkのソフトウェアスタック
• Spark SQLを掘り下げて解説
 簡単に並列分散処理が行える裏側の仕掛け
 Spark 3.0のアップデートダイジェスト
 Apache Sparkコミュニティへの参加の仕方
 様々な参加の仕方の紹介
 Apache Spark関連のイベント
Overview
5© 2020 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 JVM上で動作するOSSの並列分散処理系
6© 2020 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 JVM上で動作するOSSの並列分散処理系
大量のデータセットを
(数100GBs, TBs, PBs...)
7© 2020 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 JVM上で動作するOSSの並列分散処理系
大量のデータセットを
(数100GBs, TBs, PBs...)
複数台のサーバで構成された
クラスタを用いて
8© 2020 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 JVM上で動作するOSSの並列分散処理系
大量のデータセットを
(数100GBs, TBs, PBs...)
複数台のサーバで構成された
クラスタを用いて
現実的な時間で処理する
(数十分, 数時間のオーダー)
9© 2020 NTT DATA Corporation
Apache Spark in a nutshell
 Apache Sparkとは?
 JVM上で動作するOSSの並列分散処理系
 並列分散処理に関する面倒な制御をSparkが肩代わりしてくれる。
 エラーハンドリング
 処理の分割やスケジューリング
 etc
大量のデータセットを
(数100GBs, TBs, PBs...)
複数台のサーバで構成された
クラスタを用いて
現実的な時間で処理する
(数十分, 数時間のオーダー)
10© 2020 NTT DATA Corporation
データ処理ロジックの実装もシンプルに
 プログラミングインターフェイスの観点からも、分散処理の複雑さを隠蔽
 SQLライクなクエリやAPIを用いて、テーブルを操作するように分散処理を記述できる
whereselect groupBy avg
val df = spark.read.json("/path/to/dataset")
val result = df.select("col1", "col2").where("col3 > 0")
.groupBy("col1").avg("col2")
11© 2020 NTT DATA Corporation
Sparkの動作環境
 Sparkを動かすには、複数のサーバで構成されたクラスタが必要
 利用するサーバは、IAサーバなどコモディティなものでよい
 YARNやKubernetes、Mesosといった既存のクラスタマネージャで管理されたクラス
タ上で動作する
 Sparkに同梱されているStandalone Clusterと呼ばれるクラスタマネージャを利用
することもできる
12© 2020 NTT DATA Corporation
Sparkの動作環境
 Sparkを動かすには、複数のサーバで構成されたクラスタが必要
 利用するサーバは、IAサーバなどコモディティなものでよい
 YARNやKubernetes、Mesosといった既存のクラスタマネージャで管理されたクラス
タ上で動作する
 Sparkに同梱されているStandalone Clusterと呼ばれるクラスタマネージャを利用
することもできる
 クラウドサービスでSparkを利用することも可能
 Amazon Web Services: Amazon EMR
 Microsoft Azure: HDInsight
 Google Cloud Platform: Dataproc
 Databricks
13© 2020 NTT DATA Corporation
Sparkのソフトウェアスタックとプログラミング言語
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
14© 2020 NTT DATA Corporation
Sparkのソフトウェアスタックとプログラミング言語
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
15© 2020 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
Sparkのソフトウェアスタックとプログラミング言語
16© 2020 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
Sparkのソフトウェアスタックとプログラミング言語
17© 2020 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
Sparkのソフトウェアスタックとプログラミング言語
18© 2020 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
Sparkのソフトウェアスタックとプログラミング言語
19© 2020 NTT DATA Corporation
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
SQL
Sparkのソフトウェアスタックとプログラミング言語
Spark SQL
21© 2020 NTT DATA Corporation
Spark SQLとは
 データセットをRDBMSのテーブルのように操作する手段を提供する
 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© 2020 NTT DATA Corporation
クエリから最適化データフローを生成する
クエリエンジン
SQL DataFrameの操作
• クエリのパース
• 実行プランの生成
• 意味解析
• 最適化
• RDD(Sparkの最もプリミティブなデータ表現)レベルで表現されたデータフロー
• 加工の仕方や順序などはクエリエンジンによって最適化済み
RDD
ロード 保存
RDD
加工 加工
RDD ・・・
23© 2020 NTT DATA Corporation
クエリエンジンによる最適化
 RDDベースの処理を人手で記述する場合、プログラマが最適なデータフローを考える必要
があった
 Spark SQLではクエリエンジンが実行プランに対して、様々な最適化を適用する
 最適化の一例
 データフローの効率化
• 処理の順序の入れ替え
• 適切なJoinアルゴリズムの選択
 I/O量の削減
• 不要なカラムの読み込みを避ける (カラムプルーニング)
• 不要なパーティションの読み込みを避ける (パーティションプルーニング)
• フィルタリングをデータソース側に移譲する (フィルタプシュダウン)
 etc
24© 2020 NTT DATA Corporation
実行プランに対して適用される最適化の例
論理プラン
クエリの内容から生成される
最初の実行プラン
Filter
Join
dimension
table
fact table
25© 2020 NTT DATA Corporation
実行プランに対して適用される最適化の例
ジョインの前にフィルタできると判
断されたら、順序を入れ替える
(ジョインの負荷が下がる)。
論理プラン 最適化済み論理プラン
クエリの内容から生成される
最初の実行プラン
Filter
Join
dimension
table
fact table
Filter
Join
dimension
table
fact table
26© 2020 NTT DATA Corporation
実行プランに対して適用される最適化の例
Filter
Join
dimension
table
fact table
Filter
Join
dimension
table
Broadcast Hash
Join
Scan Scan
+
Filter
• ジョインなどは具体的なア
ルゴリズムが選択される
• データソースの機能を利
用して、フィルタをプッシュ
ダウンできる場合もある
ジョインの前にフィルタできると判
断されたら、順序を入れ替える
(ジョインの負荷が下がる)。
fact table
論理プラン 最適化済み論理プラン 物理プラン
クエリの内容から生成される
最初の実行プラン
27© 2020 NTT DATA Corporation
Spark SQLをベースとするコンポーネントも増えてきた
 他のコンポーネントも、Spark SQLをベースとしたものになってきた
 MLlib(spark.mlパッケージ)
 Structured Streaming
Spark Core
(実行エンジンおよび汎用的なデータ処理ライブラリ)
Spark
Streaming
(ストリーム処理)
Structured
Streaming
(ストリーム処理)GraphX
(グラフ処理)
MLlib
(機械学習)
Spark SQL
(クエリ処理)
分散処理が実現される裏側
29© 2020 NTT DATA Corporation
クラスタで分散処理が行われる全体像
ワーカノード
・・・
 ワーカノード上で動作するExecutorプロセスが「タスク」を処理することで、クラスタ全体で
分散処理が行われる
 アプリ開発者が記述した処理内容をタスクに分解するのはスケジューラの役割
ワーカノード
Driver
(スケジューラ)
クラスタ
30© 2020 NTT DATA Corporation
Executor
クラスタで分散処理が行われる全体像
ワーカノード
Executor
・・・
 ワーカノード上で動作するExecutorプロセスが「タスク」を処理することで、クラスタ全体で
分散処理が行われる
 アプリ開発者が記述した処理内容をタスクに分解するのはスケジューラの役割
ワーカノード
Driver
(スケジューラ)
Executorにタスクを割り当てる
クラスタ
31© 2020 NTT DATA Corporation
Executor
クラスタで分散処理が行われる全体像
ワーカノード
Executor
タスク タスク
・・・
 ワーカノード上で動作するExecutorプロセスが「タスク」を処理することで、クラスタ全体で
分散処理が行われる
 アプリ開発者が記述した処理内容をタスクに分解するのはスケジューラの役割
ワーカノード
Driver
(スケジューラ)
複数のExecutor / スロットで、
ワーカノード単体でも並列処理
スロット スロット
Executorにタスクを割り当てる
クラスタ
32© 2020 NTT DATA Corporation
 RDDレベルの一連のデータフローは「ジョブ」と呼ばれる処理単位として扱われる
 ジョブの中からひとまとまりの処理として扱える範囲を切り出し、「ステージ」と呼ばれる処理
単位を生成する(「ひとまとまりの処理」がどのように定義されるかは後述)
処理内容からタスクが生成されるまでの流れ
RDD
加工 加工加工
ステージ
RDD RDD ・・・RDD
ロード 保存
ジョブ
33© 2020 NTT DATA Corporation
処理内容からタスクが生成されるまでの流れ
 各ステージが処理するデータを分割したものをパーティションと呼ぶ
ステージ
パーティション
34© 2020 NTT DATA Corporation
処理内容からタスクが生成されるまでの流れ
中間データ
 各ステージが処理するデータを分割したものをパーティションと呼ぶ
ステージ
パーティション
最終的な処理結果
35© 2020 NTT DATA Corporation
処理内容からタスクが生成されるまでの流れ
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
中間データ
 各ステージが処理するデータを分割したものをパーティションと呼ぶ
 各パーティションはタスクで手分けして処理される
ステージ
パーティション
最終的な処理結果
36© 2020 NTT DATA Corporation
パーティションの作られ方
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
• データソースの種類によって
パーティション数が決まる
• 例えばHDFSの場合は各タスクに
ブロックサイズ程度のデータが
割り当たるように分割される
• 中間データを処理するステージでは、
APIに渡すパラメータや設定で
パーティション数が決まる
• Spark SQLではデフォルトで
200パーティション
37© 2020 NTT DATA Corporation
シャッフル
 集約処理やジョインなど、特定のキーを持つレコードをまとめて処理する必要がある場合は、
レコードの配置換えが必要。この配置換えを「シャッフル」と呼ぶ
 シャッフルはExecutor間の多対多のネットワーク通信で実現される
 したがってシャッフルが必要な処理までは「ひとまとまりの処理」を行うタスクとして単一
のExecutor上で処理可能
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
タスク
シャッフル
Apache Spark 3.0
39© 2020 NTT DATA Corporation
Apache Spark 3.0
 2020年6月に、Apache Spark 3.0がリリースされた
 およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)
40© 2020 NTT DATA Corporation
Apache Spark 3.0
 2020年6月に、Apache Spark 3.0がリリースされた
 およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)
 データ分析を支えるアップデート
 Accelerator Aware Scheduling
 Pythonの型推論機能を利用したPandas UDF APIのリデザイン
 新たに32個のビルトイン関数がSpark SQLに追加された
41© 2020 NTT DATA Corporation
Apache Spark 3.0
 2020年6月に、Apache Spark 3.0がリリースされた
 およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)
 データ分析を支えるアップデート
 Accelerator Aware Scheduling
 Pythonの型推論機能を利用したPandas UDF APIのリデザイン
 新たに32個のビルトイン関数がSpark SQLに追加された
 Spark SQLはより賢くなった
 Adaptive Query Execution (AQE)
 Dynamic Partition Pruning
42© 2020 NTT DATA Corporation
Apache Spark 3.0
 2020年6月に、Apache Spark 3.0がリリースされた
 およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)
 データ分析を支えるアップデート
 Accelerator Aware Scheduling
 Pythonの型推論機能を利用したPandas UDF APIのリデザイン
 新たに32個のビルトイン関数がSpark SQLに追加された
 Spark SQLはより賢くなった
 Adaptive Query Execution (AQE)
 Dynamic Partition Pruning
 Sparkを拡張する仕組みも導入された
 プラグイン
 ユーザ定義メトリクス
 ほかにもまだまだ
43© 2020 NTT DATA Corporation
その他にも注目のアップデートが盛り沢山
 このほか主要なアップデートはリリースノートで要チェック
 https://spark.apache.org/releases/spark-release-3-0-0.html
 https://spark.apache.org/releases/spark-release-3-0-1.html
© 2020 NTT DATA Corporation
Apache Sparkコミュニティに飛び込もう
45© 2020 NTT DATA Corporation
いちユーザの枠を超えてApache Sparkと関わる
 いちユーザとしてSparkを利用するだけではなく、Sparkコミュニティに参加することで得られ
るメリットがある
 開発に関わるもよし、情報収集の場として活用するもよし
 開発に関わることで、自分たちが使うものをよりよく育てることにつながる
 日本人の感覚(品質や細かい部分の作りこみ)をSparkの改善に活かしてほしい
• 安定性、運用のしやすさや、いざという時のトラブルシュートのしやすさなど
 コミュニティに向かって声を上げないと伝わらない
• 必要なものは必要だと伝えることが大事
 コミュニティと関わることで得られる情報がある
 開発動向がわかる
 不具合などの情報を得られる
 使っていて困ったことを質問できる
46© 2020 NTT DATA Corporation
開発者としての参加の仕方もいろいろ
 Sparkの開発に参加する方法はパッチ投稿だけじゃない!
 JIRAへのIssue登録(バグ報告 / 機能追加提案 / 改善提案)
• 自分たちでパッチを書かなくても、登録するだけでもよい
• 声を上げることが大事(ただし機能追加や改善提案の場合は必然性もセットで)
 JIRAのメンテナンス
 パッチのレビュー
 メーリングリスト上での議論への参加
• ユーザ視点からの意見はSparkの改善にとって重要
 もちろん、パッチの投稿も歓迎!
 バグ修正
 機能追加
 ドキュメントの修正 / 充実化
47© 2020 NTT DATA Corporation
そのパッチ、コミュニティに還元してください!
 秘蔵のパッチを適用し続けたSpark(だけではなくOSS全般)を運用し続けるメリットはあま
りない
 Sparkのメインストリームから乖離する
• それ、全部自分たちで保守し続けるんですか?
• 秘蔵パッチを当てたバイナリでトラブルが起こっても、コミュニティの人たちは面
倒見てくれない・・・
• マージコンフリクトだらけでバージョンアップが困難になる
• いつのまにかバージョンアップ不能なほどつぎはぎだらけに・・・
 パッチの品質
• 場当たり的なパッチ (当面の問題は解決しているが、別の部分に悪影響をもた
らしているかも・・・?)
• コミッタを含む、コミュニティの人たちからレビューを受けたほうが良い
 パッチがマージされるとリリースノートにクレジットされる
48© 2020 NTT DATA Corporation
メーリングリストの活用
 情報収集/交換の手段としてメーリングリストが活用できる
 Sparkのメーリングリストは2種類
 user@spark.apache.org
• ユーザ向け
• ユーザ同士の情報交換などに利用できる
• トラブル発生時の質問、Spark関係の宣伝などもこちら
 dev@spark.apache.org
• 開発者向け(コミッタ以外の開発者も)
• リリースや各種決めごとの投票に関する情報などが流れる
• 開発者が留意すべきメンテナンス方針や開発方針がアナウンスされる
• パッチを投稿する人は購読したほうが良い
• あとはCIインフラのダウンに関するアナウンスなど・・・
49© 2020 NTT DATA Corporation
そうは言っても参加のハードルが高いのでは?
 でも、パッチを投稿しようにもコードとか書けないし・・・。
 ドキュメントの修正やブラッシュアップのパッチならコードが書けなくても大丈夫
 パッチを投稿する以外にも貢献の仕方がある!
 やりとりは英語なんでしょ?
 そのとおり・・・。でも大丈夫。意外と通じる!
 マサカリとか飛んでくるんじゃないかと・・・
 コードレビューでおびただしい指摘を受けることもあるが、紳士的にコードやアプローチ
の良し悪しについての指摘に閉じている
 間違えても大丈夫
 手順やお作法がありそれに則って進めるべきだが、間違えていたら教えてくれる
© 2020 NTT DATA Corporation
Issue登録やパッチを投稿をしてみよう
51© 2020 NTT DATA Corporation
バグ報告 / 機能追加 / 改善提案とパッチの投稿
 SparkではIssue登録(バグ報告 / 機能追加 / 改善提案)にJIRAを、パッチの投稿や
レビューにGitHubを利用している
 JIRA
• https://issues.apache.org/jira/browse/SPARK
• 単にバグレポートをする場合はこちら
 GitHub
• https://github.com/apache/spark
• パッチを投稿する場合はこちら。プルリクエストの形でパッチを投稿する
 詳細はhttps://spark.apache.org/contributing.htmlに記載されているが、以降
のスライドで簡単な手順を紹介する
52© 2020 NTT DATA Corporation
Issue登録 (1/4)
 SparkのJIRAにアクセスする
 https://issues.apache.org/jira/browse/SPARK
 あらかじめログインしておく(事前にユーザ登録が必要)
 ページ右上のLog inリンクからログイン/ユーザ登録が可能
 ページ上部のCreateボタンを押してバグ報告のフォームを開く
 ログインするまでCreateボタンは表示されないので注意
53© 2020 NTT DATA Corporation
Issue登録 (2/4)
 項目がいろいろあるが、以下の項目を埋めればOK(ほとんどプルダウンメニュー)
① Project
 「Spark」になっていること
② Issue Type
 バグ/新機能/改善などの分類
③ Summary
 一目で内容が分かるタイトル
• Add 〜 (〜機能を追加しよう)
• Fix 〜 (〜を修正しよう)
• 〜 doesn't work (〜が動かない)
54© 2020 NTT DATA Corporation
Issue登録 (3/4)
④ Priority
 重要度(Blocker / Critical / Major / Minor / Trivial)
• ユーザやリリースへの影響によって選ぶ
• 内容に対して重要度がマッチしないと判断されたら単に修正されるだけなので、
開発に携わりながら感覚を掴んでいけばOK
⑤ Component/s
 報告の対象コンポーネント
⑥ Affect Version/s
 影響を受けるSparkのバージョン
55© 2020 NTT DATA Corporation
Issue登録 (4/4)
⑦ Description
 詳しい説明
• 〜という操作をしたら〜という例外が送出された + サンプルコードなど
• 〜という効果が得られるので〜の機能を追加しよう
⑧ Environment
 バグをレポートする場合などは、OSやJVMなど環境情報も記入するのがよい
56© 2020 NTT DATA Corporation
GitHubでプルリクエストの投稿手順
 細かい手順は割愛するが、大体以下の手順でプルリクエストを投げる
① SparkのGitリポジトリを自分のGitHubアカウントにフォークする(最初の1回でOK)
② フォークしたリポジトリを手元の環境にクローン(最初の1回でOK)
③ トピックブランチを作る(パッチ投稿するたびに実施)
• プルリクエストを投稿しようとしているブランチをもとに、新しいブランチを作る
• 次期最新リリース向けのパッチの場合はmasterブランチをベースにする
• 3.0系向けにパッチを投稿しようとしている場合はbranch-3.0をベースにする
④ 修正してコミット
⑤ フォークしたリポジトリにPushするとGitHubからプルリクエストが投稿できる
57© 2020 NTT DATA Corporation
GitHubでプルリクエストを投稿してからマージまでの流れ
 テストを通す
 投稿されたプルリクエストに対して裏で単体テストが走る。
 新規の参加者はプルリクエストを投げても自動的にテストが走らない。コミッタが
Jenkinsに命令してテストを走行してくれるのを待つ
• GitHubの機能でレビュアがサジェストされるので、お願いしてみてみるのも手
 マージ件数が多くなると、コミッタがJenkinsを使役する権利を付与してくれる
• やりとりの中で「add to whitelist」と言われたら権限が付与されたことになる
• テストが自動的に走行するようになる
• 明示的にJenkinsにテストを依頼することができる(Jenkins, retest this
please.)
 指摘事項に対応する
 修正したコードをコミット&Push
 裏で走行しているテストが通り、コミッタがマージしてもよいと判断したら晴れてマージ
58© 2020 NTT DATA Corporation
GitHubでプルリクエストを投稿する際の注意 - タイトル -
 タイトルのつけ方に注意
 「[対応するJIRAのチケット番号][コンポーネント名] タイトル」が基本形
• [SPARK-XXXX][SQL] Add new function to 〜
 タイトルはJIRAからコピーでOK
 コンポーネント名はJIRAで選択できるものと微妙に表記が異なるが、他のプルリクエ
ストを真似したり、指摘を受けながら覚えていけばよい
• CORE: Spark Core
• SS: Structured Streaming
• DOCS: Documentation
• ほかにも・・・
 masterブランチ以外のブランチにプルリクエストを投稿する場合は[ブランチ名]のタグ
をつける
 [SPARK-XXXX][3.0][MLlib] 〜
59© 2020 NTT DATA Corporation
GitHubでプルリクエストを投稿する際の注意 - プルリクエストの説明 -
 GitHub上でもプルリクエストの目的などを書く(テンプレートに従って記述する)
 What changes were proposed in this pull request?
• プルリクエストで何を変更しようとしているのか
 Why are the changes needed?
• なぜその変更が必要なのか
 Does this PR introduce any user-facing change?
• ユーザに影響があるか
 How was this patch tested?
 どうやってテストしたか
 スクリーンショットも貼り付けられるので、WebUIなど見た目に関する変更を行う場合は
Before / Afterの画像を貼り付ける
 基本的にはテストコードも含めるべきだが、手動での動作確認が許容される場合もある
 この場合は実際に確認に使用したコードスニペットや、確認した手順/環境、何を確
認したかなどを記述するのが良い
© 2020 NTT DATA Corporation
コミュニケーションの仕方や
コミュニティでのふるまい方
61© 2020 NTT DATA Corporation
英語でのコミュニケーション
 メーリングリストやJIRA/GitHub上での議論は英語だが、意外と簡単な英語でも通じ
る!
 私も英語は苦手ですが、なんとか(?)やれています・・・。
 語順と時制が合っていれば大体通じる
 時制の間違いも、特に混乱をきたさない場合は大体空気を読んでくれる
 複雑なことを説明する際無理に長い文章にせず、箇条書きに
すると伝わりやすい
 他人が使っているフレーズをまねるのもよし
 GitHubや上での議論やメーリングリストでのやりとり
 もし自分の理解が怪しい時には、素直に確認すればOK
 You mean 〜 right? (〜ってこと?)
 とはいえ、英語上達の努力を怠ってはいけない・・・
62© 2020 NTT DATA Corporation
(余談) GitHubやJIRA上でよく見かける略語
略語 元々の表現 意味 シチュエーション
LGTM / SGTM Looks / Seems good
to me
よさそうです パッチやアイディアなどに
ついてのコメント。主にレ
ビュアーやコミッタが使う
IMO / IMHO In my (humble)
opinion
私の考えでは〜 議論の中で使われる。
意見が対立した時など
FYI For your information 補足情報など
AFAIK As far as I know 知る限り〜 わりとどこでも
BTW By the way ところで 話題転換
a.k.a Also known as 〜としても知られていま
す
わりとどこでも
更に知りたい方はこちら(Spark界隈ではお目にかかったことが無いものもありますが・・・)
http://qiita.com/uasi/items/86c3a09d17792ab62dfe
63© 2020 NTT DATA Corporation
コミュニティでやらないほうがよいこと
 JIRA / GitHubに質問を投稿する(意外とある)
 「そういうのはuser@spark.apache.orgに投稿しようね」とたしなめられる
 いきなり巨大なパッチを投稿する
 レビューする人も大変
 分割できるものは分割したり、大きな機能は事前にMLで議論するのが良い
 実効的な影響のない変更を加えるパッチを投稿する(意外とある)
 例えば変数名のタイポや無駄なimport文の除去など・・・
 何かの修正のついでに一緒に直したりするのがよい
 ユーザの目に触れるものなので、ドキュメントのタイポ修正は歓迎!
 他人を罵倒する
 粗悪なコードを憎んで人を憎まず。客観的に、コードのどの部分がどうよくないのか、ど
う修正した方が良いのか指摘するとOK
 Sparkコミュニティではあまり見たことない
© 2020 NTT DATA Corporation
イベントに参加しよう
65© 2020 NTT DATA Corporation
Data + AI Summit (2020年11月開催より前はSpark + AI Summit)
 Sparkコミュニティ最大のイベント
 2013年から始まるイベント。当時の名称はSpark Summit
 世界中の開発者やユーザや開発者が一堂に会して、ユースケースや最新動向などが発表
される
 ここ数年はアメリカ西海岸とヨーロッパの年2回の開催(2020年6月開催からはオンライン
での実施)
 直近開催されたのは11/17 - 11/19のData + AI Summit Europe
 F2Fで開発者と議論やコネクションづくりができる機会でもある
 主要な開発者は大体参加している
 メールでアポを取るのが望ましいが、その辺うろうろしていたら立ち話も
できるはず
 割と大きめの機能追加などを考えているのであれば、F2Fだと話が早かったり
 2020年からはオンライン開催になったが、コミュニケーションがとりやすいプラットフォー
ムが活用されており一方通行にならないようにイベントが運営されている
66© 2020 NTT DATA Corporation
日本でもイベントが開催されている
 Spark Meetup Tokyo(不定期開催)
年2回くらいのペースで実施(大体Spark + AI Summitの後)
https://spark-meetup-tokyo.connpass.com
次回の開催は未定だが、決まったら@raspberry1123のアカウントで呟く予定
 Hadoopソースコードリーディング(不定期開催)
誰かがオーなシップを握っているわけではなく、実施したい人が日本Hadoopユーザ会の
メーリングリストに告知する形で行われるのが通例
Hadoopと言いつつ、実態はOSS分散処理基盤のMeetup
イベント名に反してソースコードリーディングに限らないので、ハードルは高くない
1週間くらい前にTwitterやメーリングリストで開催が告知される
 Hadoop / Spark Conference Japan(数年に1回くらいのペース)
これまでもPatrickやRaynold、XiaoといったSparkコミュニティのキーパーソンによる基
調講演が行われた
次回の開催は未定だが、決まったら@raspberry1123のアカウントで呟く予定
まとめ
68© 2020 NTT DATA Corporation
まとめ
 Sparkの基本
 Sparkは大量のデータを現実的な時間で処理するためのOSS並列分散処理系
 巨大なデータセットをテーブルのようなデータ構造に抽象化して処理を記述できる
 様々な用途に利用できるコンポーネントが同梱されている
 昨今はSpark SQLがSparkの中心的なコンポーネント
• シンプルに処理が記述できる
• 最適化を施してくれる
 Apache Sparkコミュニティへの参加
 開発に関われたり、いち早く最新動向が得られるのはOSSの利点
 直接開発に参加する以外にも、様々な参加の仕方がある
• バグレポートやメーリングリストでの議論への参加も立派なコントリビューション
 情報交換の場として、国内外で様々なイベントが開催されている
• 開発者や他のユーザと直接議論しやすい場でもある
© 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

What's hot

爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話Kentaro Yoshida
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpYahoo!デベロッパーネットワーク
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsYoshiyasu SAEKI
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールdcubeio
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要Google Cloud Platform - Japan
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説Masahiko Sawada
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢Naoyuki Yamada
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesignRyoma Nagata
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
 
Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once Semantics
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要[GKE & Spanner 勉強会] Cloud Spanner の技術概要
[GKE & Spanner 勉強会] Cloud Spanner の技術概要
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢KubernetesでRedisを使うときの選択肢
KubernetesでRedisを使うときの選択肢
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
Data platformdesign
Data platformdesignData platformdesign
Data platformdesign
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 

Similar to 大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuokaエディション -

Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)NTT DATA OSS Professional Services
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)NTT DATA Technology & Innovation
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...NTT DATA Technology & Innovation
 
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...NTT DATA Technology & Innovation
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αTakeshi Yamamuro
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?Oda Shinsuke
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Kenichi Sonoda
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、DatabricksでもやってみましょうかRyuichi Tokugami
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)NTT DATA Technology & Innovation
 
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
IoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI PlatformIoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI PlatformDaiyu Hatakeyama
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのsparkRyuji Tamagawa
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-LINE Corp.
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data PlatformNaoki (Neo) SATO
 

Similar to 大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuokaエディション - (20)

Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
Apache Spark超入門 (Hadoop / Spark Conference Japan 2016 講演資料)
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
 
Apache spark 2.3 and beyond
Apache spark 2.3 and beyondApache spark 2.3 and beyond
Apache spark 2.3 and beyond
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
 
Spark SQL - The internal -
Spark SQL - The internal -Spark SQL - The internal -
Spark SQL - The internal -
 
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
Project Hydrogen and Spark Graph - 分散処理 × AIをより身近にする、Apache Sparkの新機能 - (NTTデ...
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + α
 
Spark on sql server?
Spark on sql server?Spark on sql server?
Spark on sql server?
 
Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...Configureing analytics system with apache spark and object storage service of...
Configureing analytics system with apache spark and object storage service of...
 
平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか平成最後の1月ですし、Databricksでもやってみましょうか
平成最後の1月ですし、Databricksでもやってみましょうか
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
 
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
2019.03.19 Deep Dive into Spark SQL with Advanced Performance Tuning
 
IoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI PlatformIoT World Conference 2017 - Microsoft AI Platform
IoT World Conference 2017 - Microsoft AI Platform
 
20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark20160127三木会 RDB経験者のためのspark
20160127三木会 RDB経験者のためのspark
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
Apache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATAApache Spark 1000 nodes NTT DATA
Apache Spark 1000 nodes NTT DATA
 
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
15.05.21_ビッグデータ分析基盤Sparkの最新動向とその活用-Spark SUMMIT EAST 2015-
 
Microsoft AI Platform
Microsoft AI PlatformMicrosoft AI Platform
Microsoft AI Platform
 
[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform[de:code 2019 振り返り Night!] Data Platform
[de:code 2019 振り返り Night!] Data Platform
 

More from NTT DATA Technology & Innovation

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuokaエディション -

  • 1. © 2020 NTT DATA Corporation 大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuokaエディ ション - 2020/11/28 株式会社NTTデータ 技術開発本部 猿田 浩輔 オープンソースカンファレンス2020 Online/Fukuoka
  • 2. 2© 2020 NTT DATA Corporation $ whoami  猿田 浩輔  株式会社NTTデータ 技術開発本部  シニア・ソフトウェアエンジニア / Apache Sparkコミッタ  Hadoop/Sparkなど、OSSミドル関連のR&Dや技術支援  普及活動の一環で講演や書籍執筆なども  Twitter: @raspberry1123
  • 3. 3© 2020 NTT DATA Corporation 本日のお話  Apache Sparkの基本 + α  Sparkとは何か  Sparkのソフトウェアスタック • Spark SQLを掘り下げて解説  簡単に並列分散処理が行える裏側の仕掛け  Spark 3.0のアップデートダイジェスト  Apache Sparkコミュニティへの参加の仕方  様々な参加の仕方の紹介  Apache Spark関連のイベント
  • 5. 5© 2020 NTT DATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  JVM上で動作するOSSの並列分散処理系
  • 6. 6© 2020 NTT DATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  JVM上で動作するOSSの並列分散処理系 大量のデータセットを (数100GBs, TBs, PBs...)
  • 7. 7© 2020 NTT DATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  JVM上で動作するOSSの並列分散処理系 大量のデータセットを (数100GBs, TBs, PBs...) 複数台のサーバで構成された クラスタを用いて
  • 8. 8© 2020 NTT DATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  JVM上で動作するOSSの並列分散処理系 大量のデータセットを (数100GBs, TBs, PBs...) 複数台のサーバで構成された クラスタを用いて 現実的な時間で処理する (数十分, 数時間のオーダー)
  • 9. 9© 2020 NTT DATA Corporation Apache Spark in a nutshell  Apache Sparkとは?  JVM上で動作するOSSの並列分散処理系  並列分散処理に関する面倒な制御をSparkが肩代わりしてくれる。  エラーハンドリング  処理の分割やスケジューリング  etc 大量のデータセットを (数100GBs, TBs, PBs...) 複数台のサーバで構成された クラスタを用いて 現実的な時間で処理する (数十分, 数時間のオーダー)
  • 10. 10© 2020 NTT DATA Corporation データ処理ロジックの実装もシンプルに  プログラミングインターフェイスの観点からも、分散処理の複雑さを隠蔽  SQLライクなクエリやAPIを用いて、テーブルを操作するように分散処理を記述できる whereselect groupBy avg val df = spark.read.json("/path/to/dataset") val result = df.select("col1", "col2").where("col3 > 0") .groupBy("col1").avg("col2")
  • 11. 11© 2020 NTT DATA Corporation Sparkの動作環境  Sparkを動かすには、複数のサーバで構成されたクラスタが必要  利用するサーバは、IAサーバなどコモディティなものでよい  YARNやKubernetes、Mesosといった既存のクラスタマネージャで管理されたクラス タ上で動作する  Sparkに同梱されているStandalone Clusterと呼ばれるクラスタマネージャを利用 することもできる
  • 12. 12© 2020 NTT DATA Corporation Sparkの動作環境  Sparkを動かすには、複数のサーバで構成されたクラスタが必要  利用するサーバは、IAサーバなどコモディティなものでよい  YARNやKubernetes、Mesosといった既存のクラスタマネージャで管理されたクラス タ上で動作する  Sparkに同梱されているStandalone Clusterと呼ばれるクラスタマネージャを利用 することもできる  クラウドサービスでSparkを利用することも可能  Amazon Web Services: Amazon EMR  Microsoft Azure: HDInsight  Google Cloud Platform: Dataproc  Databricks
  • 13. 13© 2020 NTT DATA Corporation Sparkのソフトウェアスタックとプログラミング言語 Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL
  • 14. 14© 2020 NTT DATA Corporation Sparkのソフトウェアスタックとプログラミング言語 Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL
  • 15. 15© 2020 NTT DATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL Sparkのソフトウェアスタックとプログラミング言語
  • 16. 16© 2020 NTT DATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL Sparkのソフトウェアスタックとプログラミング言語
  • 17. 17© 2020 NTT DATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL Sparkのソフトウェアスタックとプログラミング言語
  • 18. 18© 2020 NTT DATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL Sparkのソフトウェアスタックとプログラミング言語
  • 19. 19© 2020 NTT DATA Corporation Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理) SQL Sparkのソフトウェアスタックとプログラミング言語
  • 21. 21© 2020 NTT DATA Corporation Spark SQLとは  データセットをRDBMSのテーブルのように操作する手段を提供する  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© 2020 NTT DATA Corporation クエリから最適化データフローを生成する クエリエンジン SQL DataFrameの操作 • クエリのパース • 実行プランの生成 • 意味解析 • 最適化 • RDD(Sparkの最もプリミティブなデータ表現)レベルで表現されたデータフロー • 加工の仕方や順序などはクエリエンジンによって最適化済み RDD ロード 保存 RDD 加工 加工 RDD ・・・
  • 23. 23© 2020 NTT DATA Corporation クエリエンジンによる最適化  RDDベースの処理を人手で記述する場合、プログラマが最適なデータフローを考える必要 があった  Spark SQLではクエリエンジンが実行プランに対して、様々な最適化を適用する  最適化の一例  データフローの効率化 • 処理の順序の入れ替え • 適切なJoinアルゴリズムの選択  I/O量の削減 • 不要なカラムの読み込みを避ける (カラムプルーニング) • 不要なパーティションの読み込みを避ける (パーティションプルーニング) • フィルタリングをデータソース側に移譲する (フィルタプシュダウン)  etc
  • 24. 24© 2020 NTT DATA Corporation 実行プランに対して適用される最適化の例 論理プラン クエリの内容から生成される 最初の実行プラン Filter Join dimension table fact table
  • 25. 25© 2020 NTT DATA Corporation 実行プランに対して適用される最適化の例 ジョインの前にフィルタできると判 断されたら、順序を入れ替える (ジョインの負荷が下がる)。 論理プラン 最適化済み論理プラン クエリの内容から生成される 最初の実行プラン Filter Join dimension table fact table Filter Join dimension table fact table
  • 26. 26© 2020 NTT DATA Corporation 実行プランに対して適用される最適化の例 Filter Join dimension table fact table Filter Join dimension table Broadcast Hash Join Scan Scan + Filter • ジョインなどは具体的なア ルゴリズムが選択される • データソースの機能を利 用して、フィルタをプッシュ ダウンできる場合もある ジョインの前にフィルタできると判 断されたら、順序を入れ替える (ジョインの負荷が下がる)。 fact table 論理プラン 最適化済み論理プラン 物理プラン クエリの内容から生成される 最初の実行プラン
  • 27. 27© 2020 NTT DATA Corporation Spark SQLをベースとするコンポーネントも増えてきた  他のコンポーネントも、Spark SQLをベースとしたものになってきた  MLlib(spark.mlパッケージ)  Structured Streaming Spark Core (実行エンジンおよび汎用的なデータ処理ライブラリ) Spark Streaming (ストリーム処理) Structured Streaming (ストリーム処理)GraphX (グラフ処理) MLlib (機械学習) Spark SQL (クエリ処理)
  • 29. 29© 2020 NTT DATA Corporation クラスタで分散処理が行われる全体像 ワーカノード ・・・  ワーカノード上で動作するExecutorプロセスが「タスク」を処理することで、クラスタ全体で 分散処理が行われる  アプリ開発者が記述した処理内容をタスクに分解するのはスケジューラの役割 ワーカノード Driver (スケジューラ) クラスタ
  • 30. 30© 2020 NTT DATA Corporation Executor クラスタで分散処理が行われる全体像 ワーカノード Executor ・・・  ワーカノード上で動作するExecutorプロセスが「タスク」を処理することで、クラスタ全体で 分散処理が行われる  アプリ開発者が記述した処理内容をタスクに分解するのはスケジューラの役割 ワーカノード Driver (スケジューラ) Executorにタスクを割り当てる クラスタ
  • 31. 31© 2020 NTT DATA Corporation Executor クラスタで分散処理が行われる全体像 ワーカノード Executor タスク タスク ・・・  ワーカノード上で動作するExecutorプロセスが「タスク」を処理することで、クラスタ全体で 分散処理が行われる  アプリ開発者が記述した処理内容をタスクに分解するのはスケジューラの役割 ワーカノード Driver (スケジューラ) 複数のExecutor / スロットで、 ワーカノード単体でも並列処理 スロット スロット Executorにタスクを割り当てる クラスタ
  • 32. 32© 2020 NTT DATA Corporation  RDDレベルの一連のデータフローは「ジョブ」と呼ばれる処理単位として扱われる  ジョブの中からひとまとまりの処理として扱える範囲を切り出し、「ステージ」と呼ばれる処理 単位を生成する(「ひとまとまりの処理」がどのように定義されるかは後述) 処理内容からタスクが生成されるまでの流れ RDD 加工 加工加工 ステージ RDD RDD ・・・RDD ロード 保存 ジョブ
  • 33. 33© 2020 NTT DATA Corporation 処理内容からタスクが生成されるまでの流れ  各ステージが処理するデータを分割したものをパーティションと呼ぶ ステージ パーティション
  • 34. 34© 2020 NTT DATA Corporation 処理内容からタスクが生成されるまでの流れ 中間データ  各ステージが処理するデータを分割したものをパーティションと呼ぶ ステージ パーティション 最終的な処理結果
  • 35. 35© 2020 NTT DATA Corporation 処理内容からタスクが生成されるまでの流れ タスク タスク タスク タスク タスク タスク タスク タスク タスク タスク タスク 中間データ  各ステージが処理するデータを分割したものをパーティションと呼ぶ  各パーティションはタスクで手分けして処理される ステージ パーティション 最終的な処理結果
  • 36. 36© 2020 NTT DATA Corporation パーティションの作られ方 タスク タスク タスク タスク タスク タスク タスク タスク タスク タスク タスク • データソースの種類によって パーティション数が決まる • 例えばHDFSの場合は各タスクに ブロックサイズ程度のデータが 割り当たるように分割される • 中間データを処理するステージでは、 APIに渡すパラメータや設定で パーティション数が決まる • Spark SQLではデフォルトで 200パーティション
  • 37. 37© 2020 NTT DATA Corporation シャッフル  集約処理やジョインなど、特定のキーを持つレコードをまとめて処理する必要がある場合は、 レコードの配置換えが必要。この配置換えを「シャッフル」と呼ぶ  シャッフルはExecutor間の多対多のネットワーク通信で実現される  したがってシャッフルが必要な処理までは「ひとまとまりの処理」を行うタスクとして単一 のExecutor上で処理可能 タスク タスク タスク タスク タスク タスク タスク タスク タスク タスク タスク シャッフル
  • 39. 39© 2020 NTT DATA Corporation Apache Spark 3.0  2020年6月に、Apache Spark 3.0がリリースされた  およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)
  • 40. 40© 2020 NTT DATA Corporation Apache Spark 3.0  2020年6月に、Apache Spark 3.0がリリースされた  およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)  データ分析を支えるアップデート  Accelerator Aware Scheduling  Pythonの型推論機能を利用したPandas UDF APIのリデザイン  新たに32個のビルトイン関数がSpark SQLに追加された
  • 41. 41© 2020 NTT DATA Corporation Apache Spark 3.0  2020年6月に、Apache Spark 3.0がリリースされた  およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)  データ分析を支えるアップデート  Accelerator Aware Scheduling  Pythonの型推論機能を利用したPandas UDF APIのリデザイン  新たに32個のビルトイン関数がSpark SQLに追加された  Spark SQLはより賢くなった  Adaptive Query Execution (AQE)  Dynamic Partition Pruning
  • 42. 42© 2020 NTT DATA Corporation Apache Spark 3.0  2020年6月に、Apache Spark 3.0がリリースされた  およそ4年ぶりのメジャーバージョンリリース(9月には3.0.1がリリースされた)  データ分析を支えるアップデート  Accelerator Aware Scheduling  Pythonの型推論機能を利用したPandas UDF APIのリデザイン  新たに32個のビルトイン関数がSpark SQLに追加された  Spark SQLはより賢くなった  Adaptive Query Execution (AQE)  Dynamic Partition Pruning  Sparkを拡張する仕組みも導入された  プラグイン  ユーザ定義メトリクス  ほかにもまだまだ
  • 43. 43© 2020 NTT DATA Corporation その他にも注目のアップデートが盛り沢山  このほか主要なアップデートはリリースノートで要チェック  https://spark.apache.org/releases/spark-release-3-0-0.html  https://spark.apache.org/releases/spark-release-3-0-1.html
  • 44. © 2020 NTT DATA Corporation Apache Sparkコミュニティに飛び込もう
  • 45. 45© 2020 NTT DATA Corporation いちユーザの枠を超えてApache Sparkと関わる  いちユーザとしてSparkを利用するだけではなく、Sparkコミュニティに参加することで得られ るメリットがある  開発に関わるもよし、情報収集の場として活用するもよし  開発に関わることで、自分たちが使うものをよりよく育てることにつながる  日本人の感覚(品質や細かい部分の作りこみ)をSparkの改善に活かしてほしい • 安定性、運用のしやすさや、いざという時のトラブルシュートのしやすさなど  コミュニティに向かって声を上げないと伝わらない • 必要なものは必要だと伝えることが大事  コミュニティと関わることで得られる情報がある  開発動向がわかる  不具合などの情報を得られる  使っていて困ったことを質問できる
  • 46. 46© 2020 NTT DATA Corporation 開発者としての参加の仕方もいろいろ  Sparkの開発に参加する方法はパッチ投稿だけじゃない!  JIRAへのIssue登録(バグ報告 / 機能追加提案 / 改善提案) • 自分たちでパッチを書かなくても、登録するだけでもよい • 声を上げることが大事(ただし機能追加や改善提案の場合は必然性もセットで)  JIRAのメンテナンス  パッチのレビュー  メーリングリスト上での議論への参加 • ユーザ視点からの意見はSparkの改善にとって重要  もちろん、パッチの投稿も歓迎!  バグ修正  機能追加  ドキュメントの修正 / 充実化
  • 47. 47© 2020 NTT DATA Corporation そのパッチ、コミュニティに還元してください!  秘蔵のパッチを適用し続けたSpark(だけではなくOSS全般)を運用し続けるメリットはあま りない  Sparkのメインストリームから乖離する • それ、全部自分たちで保守し続けるんですか? • 秘蔵パッチを当てたバイナリでトラブルが起こっても、コミュニティの人たちは面 倒見てくれない・・・ • マージコンフリクトだらけでバージョンアップが困難になる • いつのまにかバージョンアップ不能なほどつぎはぎだらけに・・・  パッチの品質 • 場当たり的なパッチ (当面の問題は解決しているが、別の部分に悪影響をもた らしているかも・・・?) • コミッタを含む、コミュニティの人たちからレビューを受けたほうが良い  パッチがマージされるとリリースノートにクレジットされる
  • 48. 48© 2020 NTT DATA Corporation メーリングリストの活用  情報収集/交換の手段としてメーリングリストが活用できる  Sparkのメーリングリストは2種類  user@spark.apache.org • ユーザ向け • ユーザ同士の情報交換などに利用できる • トラブル発生時の質問、Spark関係の宣伝などもこちら  dev@spark.apache.org • 開発者向け(コミッタ以外の開発者も) • リリースや各種決めごとの投票に関する情報などが流れる • 開発者が留意すべきメンテナンス方針や開発方針がアナウンスされる • パッチを投稿する人は購読したほうが良い • あとはCIインフラのダウンに関するアナウンスなど・・・
  • 49. 49© 2020 NTT DATA Corporation そうは言っても参加のハードルが高いのでは?  でも、パッチを投稿しようにもコードとか書けないし・・・。  ドキュメントの修正やブラッシュアップのパッチならコードが書けなくても大丈夫  パッチを投稿する以外にも貢献の仕方がある!  やりとりは英語なんでしょ?  そのとおり・・・。でも大丈夫。意外と通じる!  マサカリとか飛んでくるんじゃないかと・・・  コードレビューでおびただしい指摘を受けることもあるが、紳士的にコードやアプローチ の良し悪しについての指摘に閉じている  間違えても大丈夫  手順やお作法がありそれに則って進めるべきだが、間違えていたら教えてくれる
  • 50. © 2020 NTT DATA Corporation Issue登録やパッチを投稿をしてみよう
  • 51. 51© 2020 NTT DATA Corporation バグ報告 / 機能追加 / 改善提案とパッチの投稿  SparkではIssue登録(バグ報告 / 機能追加 / 改善提案)にJIRAを、パッチの投稿や レビューにGitHubを利用している  JIRA • https://issues.apache.org/jira/browse/SPARK • 単にバグレポートをする場合はこちら  GitHub • https://github.com/apache/spark • パッチを投稿する場合はこちら。プルリクエストの形でパッチを投稿する  詳細はhttps://spark.apache.org/contributing.htmlに記載されているが、以降 のスライドで簡単な手順を紹介する
  • 52. 52© 2020 NTT DATA Corporation Issue登録 (1/4)  SparkのJIRAにアクセスする  https://issues.apache.org/jira/browse/SPARK  あらかじめログインしておく(事前にユーザ登録が必要)  ページ右上のLog inリンクからログイン/ユーザ登録が可能  ページ上部のCreateボタンを押してバグ報告のフォームを開く  ログインするまでCreateボタンは表示されないので注意
  • 53. 53© 2020 NTT DATA Corporation Issue登録 (2/4)  項目がいろいろあるが、以下の項目を埋めればOK(ほとんどプルダウンメニュー) ① Project  「Spark」になっていること ② Issue Type  バグ/新機能/改善などの分類 ③ Summary  一目で内容が分かるタイトル • Add 〜 (〜機能を追加しよう) • Fix 〜 (〜を修正しよう) • 〜 doesn't work (〜が動かない)
  • 54. 54© 2020 NTT DATA Corporation Issue登録 (3/4) ④ Priority  重要度(Blocker / Critical / Major / Minor / Trivial) • ユーザやリリースへの影響によって選ぶ • 内容に対して重要度がマッチしないと判断されたら単に修正されるだけなので、 開発に携わりながら感覚を掴んでいけばOK ⑤ Component/s  報告の対象コンポーネント ⑥ Affect Version/s  影響を受けるSparkのバージョン
  • 55. 55© 2020 NTT DATA Corporation Issue登録 (4/4) ⑦ Description  詳しい説明 • 〜という操作をしたら〜という例外が送出された + サンプルコードなど • 〜という効果が得られるので〜の機能を追加しよう ⑧ Environment  バグをレポートする場合などは、OSやJVMなど環境情報も記入するのがよい
  • 56. 56© 2020 NTT DATA Corporation GitHubでプルリクエストの投稿手順  細かい手順は割愛するが、大体以下の手順でプルリクエストを投げる ① SparkのGitリポジトリを自分のGitHubアカウントにフォークする(最初の1回でOK) ② フォークしたリポジトリを手元の環境にクローン(最初の1回でOK) ③ トピックブランチを作る(パッチ投稿するたびに実施) • プルリクエストを投稿しようとしているブランチをもとに、新しいブランチを作る • 次期最新リリース向けのパッチの場合はmasterブランチをベースにする • 3.0系向けにパッチを投稿しようとしている場合はbranch-3.0をベースにする ④ 修正してコミット ⑤ フォークしたリポジトリにPushするとGitHubからプルリクエストが投稿できる
  • 57. 57© 2020 NTT DATA Corporation GitHubでプルリクエストを投稿してからマージまでの流れ  テストを通す  投稿されたプルリクエストに対して裏で単体テストが走る。  新規の参加者はプルリクエストを投げても自動的にテストが走らない。コミッタが Jenkinsに命令してテストを走行してくれるのを待つ • GitHubの機能でレビュアがサジェストされるので、お願いしてみてみるのも手  マージ件数が多くなると、コミッタがJenkinsを使役する権利を付与してくれる • やりとりの中で「add to whitelist」と言われたら権限が付与されたことになる • テストが自動的に走行するようになる • 明示的にJenkinsにテストを依頼することができる(Jenkins, retest this please.)  指摘事項に対応する  修正したコードをコミット&Push  裏で走行しているテストが通り、コミッタがマージしてもよいと判断したら晴れてマージ
  • 58. 58© 2020 NTT DATA Corporation GitHubでプルリクエストを投稿する際の注意 - タイトル -  タイトルのつけ方に注意  「[対応するJIRAのチケット番号][コンポーネント名] タイトル」が基本形 • [SPARK-XXXX][SQL] Add new function to 〜  タイトルはJIRAからコピーでOK  コンポーネント名はJIRAで選択できるものと微妙に表記が異なるが、他のプルリクエ ストを真似したり、指摘を受けながら覚えていけばよい • CORE: Spark Core • SS: Structured Streaming • DOCS: Documentation • ほかにも・・・  masterブランチ以外のブランチにプルリクエストを投稿する場合は[ブランチ名]のタグ をつける  [SPARK-XXXX][3.0][MLlib] 〜
  • 59. 59© 2020 NTT DATA Corporation GitHubでプルリクエストを投稿する際の注意 - プルリクエストの説明 -  GitHub上でもプルリクエストの目的などを書く(テンプレートに従って記述する)  What changes were proposed in this pull request? • プルリクエストで何を変更しようとしているのか  Why are the changes needed? • なぜその変更が必要なのか  Does this PR introduce any user-facing change? • ユーザに影響があるか  How was this patch tested?  どうやってテストしたか  スクリーンショットも貼り付けられるので、WebUIなど見た目に関する変更を行う場合は Before / Afterの画像を貼り付ける  基本的にはテストコードも含めるべきだが、手動での動作確認が許容される場合もある  この場合は実際に確認に使用したコードスニペットや、確認した手順/環境、何を確 認したかなどを記述するのが良い
  • 60. © 2020 NTT DATA Corporation コミュニケーションの仕方や コミュニティでのふるまい方
  • 61. 61© 2020 NTT DATA Corporation 英語でのコミュニケーション  メーリングリストやJIRA/GitHub上での議論は英語だが、意外と簡単な英語でも通じ る!  私も英語は苦手ですが、なんとか(?)やれています・・・。  語順と時制が合っていれば大体通じる  時制の間違いも、特に混乱をきたさない場合は大体空気を読んでくれる  複雑なことを説明する際無理に長い文章にせず、箇条書きに すると伝わりやすい  他人が使っているフレーズをまねるのもよし  GitHubや上での議論やメーリングリストでのやりとり  もし自分の理解が怪しい時には、素直に確認すればOK  You mean 〜 right? (〜ってこと?)  とはいえ、英語上達の努力を怠ってはいけない・・・
  • 62. 62© 2020 NTT DATA Corporation (余談) GitHubやJIRA上でよく見かける略語 略語 元々の表現 意味 シチュエーション LGTM / SGTM Looks / Seems good to me よさそうです パッチやアイディアなどに ついてのコメント。主にレ ビュアーやコミッタが使う IMO / IMHO In my (humble) opinion 私の考えでは〜 議論の中で使われる。 意見が対立した時など FYI For your information 補足情報など AFAIK As far as I know 知る限り〜 わりとどこでも BTW By the way ところで 話題転換 a.k.a Also known as 〜としても知られていま す わりとどこでも 更に知りたい方はこちら(Spark界隈ではお目にかかったことが無いものもありますが・・・) http://qiita.com/uasi/items/86c3a09d17792ab62dfe
  • 63. 63© 2020 NTT DATA Corporation コミュニティでやらないほうがよいこと  JIRA / GitHubに質問を投稿する(意外とある)  「そういうのはuser@spark.apache.orgに投稿しようね」とたしなめられる  いきなり巨大なパッチを投稿する  レビューする人も大変  分割できるものは分割したり、大きな機能は事前にMLで議論するのが良い  実効的な影響のない変更を加えるパッチを投稿する(意外とある)  例えば変数名のタイポや無駄なimport文の除去など・・・  何かの修正のついでに一緒に直したりするのがよい  ユーザの目に触れるものなので、ドキュメントのタイポ修正は歓迎!  他人を罵倒する  粗悪なコードを憎んで人を憎まず。客観的に、コードのどの部分がどうよくないのか、ど う修正した方が良いのか指摘するとOK  Sparkコミュニティではあまり見たことない
  • 64. © 2020 NTT DATA Corporation イベントに参加しよう
  • 65. 65© 2020 NTT DATA Corporation Data + AI Summit (2020年11月開催より前はSpark + AI Summit)  Sparkコミュニティ最大のイベント  2013年から始まるイベント。当時の名称はSpark Summit  世界中の開発者やユーザや開発者が一堂に会して、ユースケースや最新動向などが発表 される  ここ数年はアメリカ西海岸とヨーロッパの年2回の開催(2020年6月開催からはオンライン での実施)  直近開催されたのは11/17 - 11/19のData + AI Summit Europe  F2Fで開発者と議論やコネクションづくりができる機会でもある  主要な開発者は大体参加している  メールでアポを取るのが望ましいが、その辺うろうろしていたら立ち話も できるはず  割と大きめの機能追加などを考えているのであれば、F2Fだと話が早かったり  2020年からはオンライン開催になったが、コミュニケーションがとりやすいプラットフォー ムが活用されており一方通行にならないようにイベントが運営されている
  • 66. 66© 2020 NTT DATA Corporation 日本でもイベントが開催されている  Spark Meetup Tokyo(不定期開催) 年2回くらいのペースで実施(大体Spark + AI Summitの後) https://spark-meetup-tokyo.connpass.com 次回の開催は未定だが、決まったら@raspberry1123のアカウントで呟く予定  Hadoopソースコードリーディング(不定期開催) 誰かがオーなシップを握っているわけではなく、実施したい人が日本Hadoopユーザ会の メーリングリストに告知する形で行われるのが通例 Hadoopと言いつつ、実態はOSS分散処理基盤のMeetup イベント名に反してソースコードリーディングに限らないので、ハードルは高くない 1週間くらい前にTwitterやメーリングリストで開催が告知される  Hadoop / Spark Conference Japan(数年に1回くらいのペース) これまでもPatrickやRaynold、XiaoといったSparkコミュニティのキーパーソンによる基 調講演が行われた 次回の開催は未定だが、決まったら@raspberry1123のアカウントで呟く予定
  • 68. 68© 2020 NTT DATA Corporation まとめ  Sparkの基本  Sparkは大量のデータを現実的な時間で処理するためのOSS並列分散処理系  巨大なデータセットをテーブルのようなデータ構造に抽象化して処理を記述できる  様々な用途に利用できるコンポーネントが同梱されている  昨今はSpark SQLがSparkの中心的なコンポーネント • シンプルに処理が記述できる • 最適化を施してくれる  Apache Sparkコミュニティへの参加  開発に関われたり、いち早く最新動向が得られるのはOSSの利点  直接開発に参加する以外にも、様々な参加の仕方がある • バグレポートやメーリングリストでの議論への参加も立派なコントリビューション  情報交換の場として、国内外で様々なイベントが開催されている • 開発者や他のユーザと直接議論しやすい場でもある
  • 69. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。