SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
PySpark Intro Part.2
with SQL Graph
38rd SQL Server Study – 23rd Jan, 2021
#JSSUG
Presented by @mappie_kochi
情シス部⾨で SQL Server や
SharePoint をメインで担当。
Japan Azure Cosmos DB User
Group Organizer
⾼知県出⾝
社会⼈6年⽬ (28歳)
※明⽇ 1/24 が誕⽣⽇ (笑)
Yuji Masaoka
まっぴぃ
#JSSUG
04
03
02
01
Agenda
前回の振り返り
Azure Synapse Analytics で PySpark をはじめる⽅法 etc.
PySpark でのワークフロー実⾏にあたって押さえておきたいグラフデータにつ
いて解説 (SQL Server にあるグラフデータベースも少し解説)
ワークフローとグラフ
Python でどうやって SQL Server / SQL Database に接続するか
PySpark で DB に接続
Apache Airflow で PySpark (Python) の処理をジョブ化
PySpark の処理を⾃動化
#JSSUG
Azure Synapse Analytics で PySpark
をはじめる⽅法 etc.
前回の振り返り
#JSSUG
前回やったこと
• PySpark とは︖
• Spark を実⾏するための Python API
• Python プログラミングで Spark を利⽤できる
• Apache Spark とは︖
• ビックデータなど、⼤きいデータに対して、⾼速に、インメモリで、分散処理を⾏うことができる OSS のフレーム
ワーク
• Azure Synapse Analytics や Azure Databricks などにも⼊っている
• PySpark を使⽤したデータ処理⼊⾨
• Dataframe
• 選択、フィルタリング、条件指定、集合、結合
• 配列、ユーザー定義関数、ピボット、ウインドウ関数/集計
#JSSUG
動画URL
https://youtu.be/zvON1p7TSeU
グラフデータベースについて解説
ワークフローと
グラフ
#JSSUG
ワークフローについて考えてみる
• ⽣活の⾝の回りにあるモノは、⼤半がプロセスに従っている
• (例1) 電⾞、⾶⾏機︓⼀定の間隔で運⾏/⾶⾏
• (例2) 道路の信号機︓⼀定の間隔で変化
• ソフトウェアやテクノロジーの世界でも、⼀定のプロセスが踏まれている
• ウォーターフォール開発 (要件定義→設計→開発→テスト)
• Webアプリケーションの動作 (例えば、クライアント端末→Web→AP→DB) etc.
• プロセスという概念のレベルを下げたもの = ワークフローともいえる
• ⽬的の結果 X を得るために、Y と Z という対応を⾏う
• Webアプリケーション A を構築するために、標準的な⼿順 B を実施する
• DB にある情報を分析するために、α と β のクエリ結果を抽出し、γ に加⼯する etc.
#JSSUG
データ処理ワークフローの⼀般的なシナリオ
#JSSUG
データの
読み込み
データのコピー
データの整形
・変形
分析・
結果確認
結果の保存
ステップ
パイプライン
グラフデータ構造
#JSSUG
• 典型的なグラフデータ構造は、2つのエンティティで構成される
• エッジ (Edge)
• ノード/頂点 (Node/vertices)
• エッジ︓基本的にノード間の接続部分
• ノード︓実際のデータが存在する場所
A B
C
D
E
F
ノード
エッジ
• 有向グラフ︓⼀⽅向にしか流れないグラフデータ
• 環状、または⾮環状
• エッジの⽅向が重要な役割を果たす
有向グラフと無向グラフ
#JSSUG
• 無向グラフ︓エッジに⽅向がない
• 両端のノードに関係性が存在する
A君は友達 B君は友達
誰なんだ
コイツ・・・
B君は友達
• ⾮循環グラフ︓循環がない有向グラフ
• DAG (有向無閉路グラフ)
環状グラフと⾮環状グラフ
#JSSUG
• 環状グラフ︓1 つ以上の循環がある有向グラフ
• 同じノードから始まり、同じノードで終わる
• 元のノードに戻るための別のエッジがある
• 閉路グラフ/ループグラフとも⾔われる ※重要︓後で出ます
DAG = Directed acyclic graph
あれ・・・似てる︖
#JSSUG
データの
読み込み
データのコピー
データの整形
・変形
分析・
結果確認
結果の保存
ワークフローと DAG (有向無閉路グラフ) は
構造が似てるんです
(ここまでの話を聞くと、グラフデータベースについて理解ができそうかも!?)
SQL Graph
• SQL Server では、SQL Server 2017 からグラフデータベース機能が新搭載
• 1 つのデータベースごとに 1 つのグラフが作成可能
• Transact-SQL で操作
• 多対多のリレーションシップをモデル化
#JSSUG
https://docs.microsoft.com/ja-jp/sql/relational-databases/graphs/sql-graph-overview
https://docs.microsoft.com/ja-jp/sql/relational-databases/graphs/sql-graph-architecture
PySpark から SQL Server へ接続してみる
DBに接続
#JSSUG
PySpark (Python) + SQL Server
• Python ⽤の SQL Server ドライバーはいくつか存在
• pyodbc
• pymssql etc.
• Microsoft 公式としては、pyodbc を推奨
• https://mkleehammer.github.io/pyodbc/
• https://github.com/mkleehammer/pyodbc
• https://pypi.org/project/pyodbc/
#JSSUG
Demo
PySpark で作成したワークフローを⾃動化
Airflow
#JSSUG
Apache Airflow とは︖
• 社内にあったワークフロー業務(〇〇申請とかじゃないよ)を効率的に管理できるフレームワーク
• オープンソース
• Airbnb のエンジニアが開発し、2016 年に Apache の⼀部になる
• さまざまなジョブの実⾏、スケジューリング、配布、監視を⾏う
• Python プログラミングで DAG を定義して実⾏
• Airflow のジョブの全タスクは、DAG で定義
• Python 拡張機能を利⽤
• 障害が発⽣した場合に送信されるメール、開始/終了時刻、リトライ回数などの設定も定義
• 演算⼦
• DAG で定義できる複数のタスクは、互いに異なるものを設定できる
• Python/Bash/SQL/Sparkジョブ/クラウド演算⼦(S3,Azure,GCP etc.)、その他
#JSSUG
Airflow で実⾏できるジョブ
• 公式で案内されているもの
• https://airflow.apache.
org/docs/
#JSSUG
Airflow のインストール
• Debian ベースの Linux もしくは Docker
• https://airflow.apache.org/docs/apache-airflow/stable/installation.html
• Dockerでインストールしてみた話
• https://zenn.dev/ymasaoka/articles/get-started-with-apache-airflow
#JSSUG
DAG の作成
• DAG ファイル
• DAG を実⾏するために必要なすべての構成パラメータを含んだ、Python スクリプト
• DAG
• Python 拡張機能を利⽤
• 障害が発⽣した場合に送信されるメール、開始/終了時刻、リトライ回数などの設定も定義
• ファイル内に定義する内容は⼤きく分けて5つ
• 必要なモジュールのインポート
• デフォルト引数の宣⾔
• DAG オブジェクトのインスタンス化
• 1 つの DAG 内で⾏うすべてのタスクを定義
• 実⾏/タスクの依存関係の順序を宣⾔
#JSSUG
Airflow で SQL Server に接続
• PyPI からライブラリをインストール
• apache-airflow-providers-odbc
• apache-airflow-providers-microsoft-mssql
• DAG定義ファイル内でライブラリを呼び出し
• airflow.providers.microsoft.mssql.hooks.mssql.MsSqlHook
• SQL Server と対話 (コネクション⽣成)
• airflow.providers.microsoft.mssql.operators.mssql.MsSqlOperator
• SQL Server で SQL を実⾏
• Docker で Airflow+pyodbc やるのは少し⾯倒
• root 権限がないとインストールが失敗してしまう (たぶんDebian直接なら簡単、Dockerfileと格闘中)
• そうか、Azure Databricks の登場︖
Demo
まとめ
#JSSUG
まとめ
• ワークフローとグラフデータは似ている
• DAG (有向無閉路グラフ)
• SQL Server 2017 から SQL Server にもグラフデータベース機能が登場 (SQL Graph)
• PySpark (Python) で SQL Server に接続
• いくつかドライバーが提供されている
• Microsoft 公式としては、pyodbc を推奨
• Apache Airflow で PySpark 処理はワークフロー化できる
• Python 拡張機能である DAG 定義ファイルを使って、ジョブワークフローを定義
• タスクの依存関係をコードで定義できる
• さまざまな種類の演算⼦が使⽤可能
#JSSUG
参考書籍・参考情報
• Learn PySpark@Apress
• https://www.apress.com/gp/book/9781484249604
• Microsoft Docs
• Python SQL ドライバー – pyodbc
• SQL テーブルから Python Pandas データフレームにデータを挿⼊する
• SQL Server と Azure SQL Database でのグラフ処理
• GitHub
• ymasaoka/Presentation-materials
#JSSUG
THANK YOU
Any Questions?
#JSSUG

Mais conteúdo relacionado

Mais procurados

BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめTanaka Yuichi
 
Synapse lakedatabase
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabaseRyoma Nagata
 
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakaltクラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakaltCloudera Japan
 
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみるTakahiro Moteki
 
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyoMasahiro NAKAYAMA
 
[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンド[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンドde:code 2017
 
Lambda in java_20160121
Lambda in java_20160121Lambda in java_20160121
Lambda in java_20160121Teruo Kawasaki
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Sotaro Kimura
 
Apache NiFiと 他プロダクトのつなぎ方
Apache NiFiと他プロダクトのつなぎ方Apache NiFiと他プロダクトのつなぎ方
Apache NiFiと 他プロダクトのつなぎ方Sotaro Kimura
 
Awsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩みAwsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩みKeigo Suda
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Tanaka Yuichi
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)Akio Katayama
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Japan
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTeruo Kawasaki
 
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyoBluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyoMasahiro NAKAYAMA
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #EShuji Watanabe
 
これからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていることこれからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていることgree_tech
 
ここがつらいよAws batch
ここがつらいよAws batchここがつらいよAws batch
ここがつらいよAws batchYu Yamada
 

Mais procurados (20)

BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめBigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
BigDataUnivercity 2017年改めてApache Sparkとデータサイエンスの関係についてのまとめ
 
Synapse lakedatabase
Synapse lakedatabaseSynapse lakedatabase
Synapse lakedatabase
 
Running Apache Spark on AWS
Running Apache Spark on AWSRunning Apache Spark on AWS
Running Apache Spark on AWS
 
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakaltクラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
クラウド上でHadoopを構築できる Cloudera Director 2.0 の紹介 #dogenzakalt
 
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
[JAWSBigData#11]Cloudera on AWSと Amazon EMRを両方本番運用し 3つの観点から比較してみる
 
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo
 
[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンド[MW07] OSS on Azure で構築するモバイルバックエンド
[MW07] OSS on Azure で構築するモバイルバックエンド
 
Lambda in java_20160121
Lambda in java_20160121Lambda in java_20160121
Lambda in java_20160121
 
Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本Kafkaを活用するためのストリーム処理の基本
Kafkaを活用するためのストリーム処理の基本
 
Apache NiFiと 他プロダクトのつなぎ方
Apache NiFiと他プロダクトのつなぎ方Apache NiFiと他プロダクトのつなぎ方
Apache NiFiと 他プロダクトのつなぎ方
 
Awsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩みAwsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩み
 
Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析Bluemixを使ったTwitter分析
Bluemixを使ったTwitter分析
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)
 
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadedaCloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
Cloudera Data Science WorkbenchとPySparkで 好きなPythonライブラリを 分散で使う #cadeda
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 
TokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoopTokyoWebminig カジュアルなHadoop
TokyoWebminig カジュアルなHadoop
 
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyoBluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
これからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていることこれからのインフラエンジニアについて考えていること
これからのインフラエンジニアについて考えていること
 
ここがつらいよAws batch
ここがつらいよAws batchここがつらいよAws batch
ここがつらいよAws batch
 

Semelhante a PySpark Intro Part.2 with SQL Graph

データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~The Japan DataScientist Society
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン  Apache Airflowを用いた 大規模データパイプライン構築と改善PyConAPAC2023 ワークフローエンジン  Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善株式会社MonotaRO Tech Team
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理Oshitari_kochi
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Yasuaki Matsuda
 
20160728 hyperscale #03
20160728 hyperscale #0320160728 hyperscale #03
20160728 hyperscale #03ManaMurakami1
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うかYutaka Tachibana
 
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたSQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたKumano Ryo
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with DockerOshitari_kochi
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapploggingTakayoshi Tanaka
 
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 Streaming on AWS -S3からKinesisへ-
Spark Streaming on AWS -S3からKinesisへ-Spark Streaming on AWS -S3からKinesisへ-
Spark Streaming on AWS -S3からKinesisへ-chibochibo
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...NTT DATA Technology & Innovation
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
Explains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL ServerExplains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL ServerOshitari_kochi
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeHideo Takagi
 

Semelhante a PySpark Intro Part.2 with SQL Graph (20)

データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン  Apache Airflowを用いた 大規模データパイプライン構築と改善PyConAPAC2023 ワークフローエンジン  Apache Airflowを用いた 大規模データパイプライン構築と改善
PyConAPAC2023 ワークフローエンジン Apache Airflowを用いた 大規模データパイプライン構築と改善
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
 
20160728 hyperscale #03
20160728 hyperscale #0320160728 hyperscale #03
20160728 hyperscale #03
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
GraphQLはどんな時に使うか
GraphQLはどんな時に使うかGraphQLはどんな時に使うか
GraphQLはどんな時に使うか
 
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushiGoogle Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
 
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみたSQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with Docker
 
20210129 azure webapplogging
20210129 azure webapplogging20210129 azure webapplogging
20210129 azure webapplogging
 
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 Streaming on AWS -S3からKinesisへ-
Spark Streaming on AWS -S3からKinesisへ-Spark Streaming on AWS -S3からKinesisへ-
Spark Streaming on AWS -S3からKinesisへ-
 
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
大量のデータ処理や分析に使えるOSS Apache Spark入門 - Open Source Conference2020 Online/Fukuoka...
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
Explains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL ServerExplains Microsoft Extensibility SDK for Java for SQL Server
Explains Microsoft Extensibility SDK for Java for SQL Server
 
Azure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data LakeAzure Antenna はじめての Azure Data Lake
Azure Antenna はじめての Azure Data Lake
 

Mais de Oshitari_kochi

Azure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へAzure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へOshitari_kochi
 
Azure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレAzure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレOshitari_kochi
 
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選Oshitari_kochi
 
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Oshitari_kochi
 
試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツ試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツOshitari_kochi
 
ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!Oshitari_kochi
 
Azure Cosmos DB で始める Java + NoSQL 開発
Azure Cosmos DB で始める Java + NoSQL 開発Azure Cosmos DB で始める Java + NoSQL 開発
Azure Cosmos DB で始める Java + NoSQL 開発Oshitari_kochi
 
Azure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてAzure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてOshitari_kochi
 
Azure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについてAzure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについてOshitari_kochi
 
About entities of Azure Cosmos DB
About entities of Azure Cosmos DBAbout entities of Azure Cosmos DB
About entities of Azure Cosmos DBOshitari_kochi
 
Azure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DBAzure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DBOshitari_kochi
 
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recapOshitari_kochi
 
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話Oshitari_kochi
 
Start learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse LinkStart learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse LinkOshitari_kochi
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with DockerOshitari_kochi
 
Start Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode ExtensionStart Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode ExtensionOshitari_kochi
 
Summary of SQL Database Updates
Summary of SQL Database UpdatesSummary of SQL Database Updates
Summary of SQL Database UpdatesOshitari_kochi
 
Summary of SQL Server 2019 new features
Summary of SQL Server 2019 new featuresSummary of SQL Server 2019 new features
Summary of SQL Server 2019 new featuresOshitari_kochi
 
Tips for passing AZ-103 once
Tips for passing AZ-103 onceTips for passing AZ-103 once
Tips for passing AZ-103 onceOshitari_kochi
 
Migrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerMigrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerOshitari_kochi
 

Mais de Oshitari_kochi (20)

Azure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へAzure SQL MI Link で移行も DR もポチッとな、の時代へ
Azure SQL MI Link で移行も DR もポチッとな、の時代へ
 
Azure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレAzure Policy + Azure RBAC の導入に際して得たアレコレ
Azure Policy + Azure RBAC の導入に際して得たアレコレ
 
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
SPS 開発から SPO 開発に変わる際に気をつけなければならないポイント 3 選
 
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
Updates of Azure NoSQL announced at Microsoft Ignite Spring 2021
 
試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツ試験スキルのアウトラインから得たMCP試験受験のコツ
試験スキルのアウトラインから得たMCP試験受験のコツ
 
ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!ここから始めましょう、イチからーーいいえ、Cosmosから!
ここから始めましょう、イチからーーいいえ、Cosmosから!
 
Azure Cosmos DB で始める Java + NoSQL 開発
Azure Cosmos DB で始める Java + NoSQL 開発Azure Cosmos DB で始める Java + NoSQL 開発
Azure Cosmos DB で始める Java + NoSQL 開発
 
Azure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについてAzure Cosmos DB の整合性レベルについて
Azure Cosmos DB の整合性レベルについて
 
Azure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについてAzure Cosmos DB のエンティティについて
Azure Cosmos DB のエンティティについて
 
About entities of Azure Cosmos DB
About entities of Azure Cosmos DBAbout entities of Azure Cosmos DB
About entities of Azure Cosmos DB
 
Azure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DBAzure Synapse Link for Azure Cosmos DB
Azure Synapse Link for Azure Cosmos DB
 
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
20200809_2020年から始める Azure Cosmos DB 入門 with Azure Synapse Link recap
 
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
よわよわエンジニアがde:code 2020に感化されて新しくコミュニティを立ち上げてみた話
 
Start learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse LinkStart learning Azure Cosmos DB with Azure Synapse Link
Start learning Azure Cosmos DB with Azure Synapse Link
 
Get started with future C# .Net development with Docker
Get started with future C# .Net development with DockerGet started with future C# .Net development with Docker
Get started with future C# .Net development with Docker
 
Start Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode ExtensionStart Cosmos DB with VSCode Extension
Start Cosmos DB with VSCode Extension
 
Summary of SQL Database Updates
Summary of SQL Database UpdatesSummary of SQL Database Updates
Summary of SQL Database Updates
 
Summary of SQL Server 2019 new features
Summary of SQL Server 2019 new featuresSummary of SQL Server 2019 new features
Summary of SQL Server 2019 new features
 
Tips for passing AZ-103 once
Tips for passing AZ-103 onceTips for passing AZ-103 once
Tips for passing AZ-103 once
 
Migrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent ProfilerMigrating from SQL Server Profiler to xEvent Profiler
Migrating from SQL Server Profiler to xEvent Profiler
 

PySpark Intro Part.2 with SQL Graph

  • 1. PySpark Intro Part.2 with SQL Graph 38rd SQL Server Study – 23rd Jan, 2021 #JSSUG Presented by @mappie_kochi
  • 2. 情シス部⾨で SQL Server や SharePoint をメインで担当。 Japan Azure Cosmos DB User Group Organizer ⾼知県出⾝ 社会⼈6年⽬ (28歳) ※明⽇ 1/24 が誕⽣⽇ (笑) Yuji Masaoka まっぴぃ #JSSUG
  • 3. 04 03 02 01 Agenda 前回の振り返り Azure Synapse Analytics で PySpark をはじめる⽅法 etc. PySpark でのワークフロー実⾏にあたって押さえておきたいグラフデータにつ いて解説 (SQL Server にあるグラフデータベースも少し解説) ワークフローとグラフ Python でどうやって SQL Server / SQL Database に接続するか PySpark で DB に接続 Apache Airflow で PySpark (Python) の処理をジョブ化 PySpark の処理を⾃動化 #JSSUG
  • 4. Azure Synapse Analytics で PySpark をはじめる⽅法 etc. 前回の振り返り #JSSUG
  • 5. 前回やったこと • PySpark とは︖ • Spark を実⾏するための Python API • Python プログラミングで Spark を利⽤できる • Apache Spark とは︖ • ビックデータなど、⼤きいデータに対して、⾼速に、インメモリで、分散処理を⾏うことができる OSS のフレーム ワーク • Azure Synapse Analytics や Azure Databricks などにも⼊っている • PySpark を使⽤したデータ処理⼊⾨ • Dataframe • 選択、フィルタリング、条件指定、集合、結合 • 配列、ユーザー定義関数、ピボット、ウインドウ関数/集計 #JSSUG 動画URL https://youtu.be/zvON1p7TSeU
  • 7. ワークフローについて考えてみる • ⽣活の⾝の回りにあるモノは、⼤半がプロセスに従っている • (例1) 電⾞、⾶⾏機︓⼀定の間隔で運⾏/⾶⾏ • (例2) 道路の信号機︓⼀定の間隔で変化 • ソフトウェアやテクノロジーの世界でも、⼀定のプロセスが踏まれている • ウォーターフォール開発 (要件定義→設計→開発→テスト) • Webアプリケーションの動作 (例えば、クライアント端末→Web→AP→DB) etc. • プロセスという概念のレベルを下げたもの = ワークフローともいえる • ⽬的の結果 X を得るために、Y と Z という対応を⾏う • Webアプリケーション A を構築するために、標準的な⼿順 B を実施する • DB にある情報を分析するために、α と β のクエリ結果を抽出し、γ に加⼯する etc. #JSSUG
  • 9. グラフデータ構造 #JSSUG • 典型的なグラフデータ構造は、2つのエンティティで構成される • エッジ (Edge) • ノード/頂点 (Node/vertices) • エッジ︓基本的にノード間の接続部分 • ノード︓実際のデータが存在する場所 A B C D E F ノード エッジ
  • 10. • 有向グラフ︓⼀⽅向にしか流れないグラフデータ • 環状、または⾮環状 • エッジの⽅向が重要な役割を果たす 有向グラフと無向グラフ #JSSUG • 無向グラフ︓エッジに⽅向がない • 両端のノードに関係性が存在する A君は友達 B君は友達 誰なんだ コイツ・・・ B君は友達
  • 11. • ⾮循環グラフ︓循環がない有向グラフ • DAG (有向無閉路グラフ) 環状グラフと⾮環状グラフ #JSSUG • 環状グラフ︓1 つ以上の循環がある有向グラフ • 同じノードから始まり、同じノードで終わる • 元のノードに戻るための別のエッジがある • 閉路グラフ/ループグラフとも⾔われる ※重要︓後で出ます DAG = Directed acyclic graph
  • 13. ワークフローと DAG (有向無閉路グラフ) は 構造が似てるんです (ここまでの話を聞くと、グラフデータベースについて理解ができそうかも!?)
  • 14. SQL Graph • SQL Server では、SQL Server 2017 からグラフデータベース機能が新搭載 • 1 つのデータベースごとに 1 つのグラフが作成可能 • Transact-SQL で操作 • 多対多のリレーションシップをモデル化 #JSSUG https://docs.microsoft.com/ja-jp/sql/relational-databases/graphs/sql-graph-overview https://docs.microsoft.com/ja-jp/sql/relational-databases/graphs/sql-graph-architecture
  • 15. PySpark から SQL Server へ接続してみる DBに接続 #JSSUG
  • 16. PySpark (Python) + SQL Server • Python ⽤の SQL Server ドライバーはいくつか存在 • pyodbc • pymssql etc. • Microsoft 公式としては、pyodbc を推奨 • https://mkleehammer.github.io/pyodbc/ • https://github.com/mkleehammer/pyodbc • https://pypi.org/project/pyodbc/ #JSSUG
  • 17. Demo
  • 19. Apache Airflow とは︖ • 社内にあったワークフロー業務(〇〇申請とかじゃないよ)を効率的に管理できるフレームワーク • オープンソース • Airbnb のエンジニアが開発し、2016 年に Apache の⼀部になる • さまざまなジョブの実⾏、スケジューリング、配布、監視を⾏う • Python プログラミングで DAG を定義して実⾏ • Airflow のジョブの全タスクは、DAG で定義 • Python 拡張機能を利⽤ • 障害が発⽣した場合に送信されるメール、開始/終了時刻、リトライ回数などの設定も定義 • 演算⼦ • DAG で定義できる複数のタスクは、互いに異なるものを設定できる • Python/Bash/SQL/Sparkジョブ/クラウド演算⼦(S3,Azure,GCP etc.)、その他 #JSSUG
  • 21. Airflow のインストール • Debian ベースの Linux もしくは Docker • https://airflow.apache.org/docs/apache-airflow/stable/installation.html • Dockerでインストールしてみた話 • https://zenn.dev/ymasaoka/articles/get-started-with-apache-airflow #JSSUG
  • 22. DAG の作成 • DAG ファイル • DAG を実⾏するために必要なすべての構成パラメータを含んだ、Python スクリプト • DAG • Python 拡張機能を利⽤ • 障害が発⽣した場合に送信されるメール、開始/終了時刻、リトライ回数などの設定も定義 • ファイル内に定義する内容は⼤きく分けて5つ • 必要なモジュールのインポート • デフォルト引数の宣⾔ • DAG オブジェクトのインスタンス化 • 1 つの DAG 内で⾏うすべてのタスクを定義 • 実⾏/タスクの依存関係の順序を宣⾔ #JSSUG
  • 23. Airflow で SQL Server に接続 • PyPI からライブラリをインストール • apache-airflow-providers-odbc • apache-airflow-providers-microsoft-mssql • DAG定義ファイル内でライブラリを呼び出し • airflow.providers.microsoft.mssql.hooks.mssql.MsSqlHook • SQL Server と対話 (コネクション⽣成) • airflow.providers.microsoft.mssql.operators.mssql.MsSqlOperator • SQL Server で SQL を実⾏ • Docker で Airflow+pyodbc やるのは少し⾯倒 • root 権限がないとインストールが失敗してしまう (たぶんDebian直接なら簡単、Dockerfileと格闘中) • そうか、Azure Databricks の登場︖
  • 24. Demo
  • 26. まとめ • ワークフローとグラフデータは似ている • DAG (有向無閉路グラフ) • SQL Server 2017 から SQL Server にもグラフデータベース機能が登場 (SQL Graph) • PySpark (Python) で SQL Server に接続 • いくつかドライバーが提供されている • Microsoft 公式としては、pyodbc を推奨 • Apache Airflow で PySpark 処理はワークフロー化できる • Python 拡張機能である DAG 定義ファイルを使って、ジョブワークフローを定義 • タスクの依存関係をコードで定義できる • さまざまな種類の演算⼦が使⽤可能 #JSSUG
  • 27. 参考書籍・参考情報 • Learn PySpark@Apress • https://www.apress.com/gp/book/9781484249604 • Microsoft Docs • Python SQL ドライバー – pyodbc • SQL テーブルから Python Pandas データフレームにデータを挿⼊する • SQL Server と Azure SQL Database でのグラフ処理 • GitHub • ymasaoka/Presentation-materials #JSSUG