KEMBAR78
SQL Server 使いのための Azure Synapse Analytics - Spark 入門 | PPTX
畠山 大有 | Daiyu Hatakeyama | @dahatake
Architect && Software Engineer && Applied Data Scientist
Microsoft Japan
SQL Server 使いのための
Azure Synapse Analytics
Spark 入門
HDFS
分散ファイルシステム“HDFS” (Hadoop Distributed File System)
 複数のコンピューターを束ねて、
一つの仮想的なファイルシステムを提供
 Hadoop クラスタに属する全ての
ノードが同じ名前空間を共有
 各ファイルは 64 MB ~ 256 MB 程度の
ブロックに分割されて、複数ノードに分散
 ブロックサイズが大きいのは、
シーケンシャルアクセスに特化している
ため
 各断片は最低 3 ノードに複製され、
ノード障害への耐性を持つ
 一つのファイルの複数の部分を、複数の
コンピューターで同時に処理することで、
処理を高速化することができる
断片 1 断片 2 断片 3 断片 4
断片 1 断片 2 断片 3 断片 4
ファイル 1 断片 1 断片 2 断片 3 断片 4
ファイル 4 断片 1 断片 2 断片 3 断片 4
分散プログラミングモデル “MapReduce”
2013-08-26 23:59:03 W3SVC1 192.168.0.1 GET /…
2013-08-26 23:59:05 W3SVC1 192.168.0.1 GET /…
2013-08-26 23:59:25 W3SVC1 192.168.0.1 GET /…
2013-08-27 00:01:02 W3SVC1 192.168.0.1 GET /…
2013-08-27 00:02:04 W3SVC1 192.168.0.1 GET /…
 名前は一見難しげですが、実際には単純です
(だからこそスケーラビリティがあります)
 例えば右のような Web のアクセスログがあるとして、
 伝統的なテキスト処理ツールによる集計はこのようなものですが、
$ grep /Login.aspx access_log | sort | uniq –c > output.txt
対象ファイルの全行を頭から舐めて
何らかの処理をする(この場合は検索)
中間結果を集計の
ためにソートする
ソートされたデータを
数え上げて結果を得る
MapReduce はこういった処理をクラスター上で並列分散実行する仕組みです
Map Reduce
SQL Query
Data Frame
Unresolved
Logical Plan Logical Plan Optimized
Logical Plan
Selected
Physical
Plan
RDDsPhysical
Plans
CostModel
Catalog
Analysis Logical
Optimization
Physical
Planning
Code
Generation
Catalyst
分散処理
オプティマイザー
インメモリ
項目 2013 年の記録
Hadoop
Spark 100 TB
(2014年)
Spark 1 PB
(2014年)
データ サイズ 102.5TB 100 TB 1 PB (≒1000 TB)
処理時間 72 分 23 分 234 分
ノード数 2100 206 190
コア数 50,400 6,592 6,080
0
20
40
60
80
100
120
1 2
Series1
9
Standalone Scheduler YARN Mesos
Spark SQL
Spark
Streaming
MLlib GraphX
PythonSQLR Scala Java
• 外部のデータベース、構造化ファイル、
Hive テーブル等、様々なデータソースにク
エリを実行することができる
• SQL と HiveQL の両方が使える
• Python, Scala and Java からも実行できる
• Spark structured streaming もサポート
を
オプティマイザとして採用
Spark での ETL Query の例
Read Table 1
Read Table 2
Join
Filter
Write
• カラムストア
圧縮
スキーマ
Col. A Col. B
a1
...
ak
ak+1
...
an
b1
...
bk
bk+1
...
bn
a1
...
ak
b1
...
bk
ak+1
...
an
bk+1
...
bn
Row group 1
Row group 2
Column
chunk
A1
Column
chunk
B1
Column
chunk
A2
Column
chunk
B2
Col.
chunk
A1
Col.
chunk
B1
Col.
chunk
A2
Col.
chunk
B2
Footer
Header
Data
Header
Data
Page
...
Row group 1
Col. chunk A1: 0, 1000
Col. chunk B1: 1000, 500
Row group 2
Col. chunk A2: 1500, 2000
Col. chunk B2: 3500, 500
...
論理構造
物理構造
Metric Result Comment
Serialized size Parquet is 20-40% smaller than Bond Columnar format -> better compression
Serialization throughput Parquet is 3-6x faster than Bond Cheaper compression codec
Deserialization throughput Parquet is 1.5-3x faster than Bond Cheaper string encoding (UTF-8 vs UTF-16)
Query throughput: point lookup Parquet is 4x faster than Bond Most columns are not deserialized
Query throughput: Scrubbing Parquet is 4x faster than Bond Most columns are not deserialized
Query throughput: LogsToMetrics Parquet is 1.5x faster than Bond Better deserialization throughput
Query throughput: SecurityWorkflow Parquet is as fast as Bond Data format is not a bottleneck
Group By が Avro より 2.6倍程度
高速
全件スキャンで、Avro より
2倍以上高速
ファイルサイズが Avro より 25%
小さい。圧縮していないCSVより
も 82%小さい
https://delta.io
delta
dataframe.write
.format("parquet")
.partitionBy(“date")
.save("/path/to/parquet")
CREATE TABLE events (
date DATE,
eventId STRING,
eventType STRING)
USING parquet
OPTIONS (path = ‘/path/to/parquet' )
PARTITIONED BY (date)
CREATE TABLE events_delta
USING delta
LOCATION ‘/path/to/delta'
dataframe.write
.format(“delta")
.partitionBy(“date")
.save("/path/to/delta")
Delta
• Apache Spark 2.4
• Linux Foundation Delta Lake 0.4 support
• .Net Core 3.0 support
• Python 3.6 + Anaconda support
• 他の Azure Synapse services との連携
• セキュリティとログイン
• メタデータ
• プロビジョニング
• nteract ベースの notebooks
• 高速な SQL pools へのデータロード
• よくある利用シナリオ
• データ準備 / Data Engineering / ETL
• Spark ML / Azure ML integration
• 効果的なリソースの使用
• 迅速に開始
• オートスケール。最小3 node
• 自動一時停止
• 様々なプログラミング言語のサポート
• .Net (C#), PySpark, Scala, Spark SQL,
Java
SQL Server Synapse Spark Pool
ファイル形式 独自バイナリー : mdf,ndf,ldf Parquet など
ファイルの場所 ファイルとして指定 HDFS: 実際には Azure Data Lake Storage Gen 2
スケールアップ コンピューターのスペックアップ コンピューターのスペックアップ
スケールアウト (Option) SQL Server Big Data Cluster Apache Hadoop YARN
クエリエンジン SQL Engine Spark Engine
実行計画 内部管理: Cost base Optimizer Spark ベース: Spark 実行プラン
クエリ実行 SQL Engine 内部処理 Executor による Scala - Java ベースの実行
機械学習 SQL Server Machine Learning service –
R / Python
SparkML
グラフクエリ SQL Graph GraphX
管理ツール SQL Server Management Studio |
Azure Data Studio
Spark UI
開発言語 ODBC/OLEDB/JDBC など各種ライブラ
リーから多くの開発言語に対応
Python / R / Spark SQL / Scala / Java / .NET
Spark Instance
VM – 001
Node Agent
Hive
Metastore
YARN RM - 01
Zookeeper -
01
Livy - 01
VM – 002
Node Agent
YARN RM - 02
Zookeeper -
02
VM – 003
Node Agent
YARN NM - 03
Zookeeper -
03
VM – 004
Node Agent
YARN NM - 04
Subnet
VM – 005
Node Agent
Synapse Cluster
Service
(Control Plane)
Heartbeat sequence
Azure Resource
Provider
Create VMs
with
Specialized
VHD
Provision Resources
Heartbeats
Create Cluster
YARN NM - 02
YARN NM -
01
Spark
Executors
Spark
Executors Spark
Executors Spark
Executors
Synapse Service
Job Service Frontend
Spark API
Controller …
Gateway
Resource
Provider
DB
Synapse Studio
AAD
Auth Service
Instance
Creation
Service DB
Azure
Job Service Backend
Spark Plugin
DB
…
Spark Instance
VM VM VM VM VM VM
デフォルト設定
必須項目
component versions, auto-pause
PyPi (pip freeze) のファイルフォー
マット。
一般的には requirements.txt
In the Portal
Specify the new requirements while creating Spark
Pool in Additional Settings blade
PIP requirements file standard
Collect
Data
ファイルの読み取り
SQL Databases へのクエ
リ
Web Services 呼び出し
Web Pages のスクレイ
プ
Prepare
Data
データの探索
データの妥当性検証
データのクリーンアップ
データの特徴理解
Train
Model
学習用データセット作成
実験環境
学習の評価
学習状況の可視化
Evaluate
Model
モデルのテスト
モデルの比較
モデルの妥当性検証
評価状況の可視化
Deploy
Model
モデルのエクスポー
ト
ジョブの準備
コンテナのデプロイ
再パッケージング
Notebook
(Synapse Spark)
実行可能なもの:
- Python code
- R code
- SQL queries
- Shell commands
コード か テキスト の追加
コード もしくは テキストの
削除
順番の変更
Magic Command 説明
%%pyspark Python
%%spark Scala
%%sql Spark SQL
%%csharp Spark.NET C#
%%time
セルの実行時間
%%capture stdout, stderror
%%writefile セルの内容をファイルに出力
Cell の Magic Command
セル単位で実行環境を設定する
最初の行に記載する必要があり
いずれも Spark 環境での動作
Toolbar からの実行
選択しているセルから
Toolbar から出力結果の削除セルとして出力
保存 (publishing)
出力 (ダウンロード .ipynb ファイル
)
Pipeline のステップの一つとしてpipeline activities
SQL Pool の table を DataFrame に直接読み込める
2
Analytics runtimes
SQL
Common data estate
Shared meta data
Unified experience
Synapse Studio
Store Azure Data Lake Storage Gen2
Power BI
Azure
Machine Learning
クラウド デー
タ
SaaS データ
オンプレミス
データ
デバイス デー
タ
…これらを試してみる
• Spark で事前処理
• 複雑な CSV の読み込みに Polybase
ではなく、COPY コマンドを試して
みる
Analytics Runtimes
SQL serverless
SQL Runtime
共有クラスター
自動スケール
共有ストレージ
SQL pool
SQL Runtime
プロビジョン クラ
スター
現在、手動スケールの
み
共有
ストレー
ジ
専用
ストレージクラスター × N
個を作成可能
クラスター × N
個を作成可能
Spark pool
Spark Runtime
プロビジョン クラ
スター
自動/手動スケール
共有ストレージ
データ統合機能
パイプライン/データ
フロー
Azure
Data Lake Storage Gen2
※現在、Spark pool から SQL Analytics にメタデータ共有可能なのは、Parquet ファイル形式のマネージドテーブル/外部テーブルで、SQL pool への共有は
Synapse Studio
開発/監視/管理
• リソース状況認識型タスクスケジューラーによる
高い同時実行性
• 交換理性:自己チューニング型のワークロード
マネジメント:キャパシティ プランニング,
アクセス制御, リソース ガバナンス
Azure Storage
Synapse SQL
query service
Power BI Azure Data Studio SSMS
Read and write
data files
Sync table
definitions
Synapse Spark
pool
Spark Table 作成
# ADLS からファイルを読み込む
df = spark.read.load('abfss://wwi-
02@asadatalakedahatake.dfs.core.windows.net/sale-
small/Year=2019/Quarter=Q1/Month=1/Day=20190101/sale-small-20190101-
snappy.parquet', format='parquet')
display(df.limit(10))
# Spark Table に保存
df.write.mode("overwrite").saveAsTable("default.salessmall")
# クエリ実行
df = spark.sql("SELECT * FROM default.salessmall")
df.show(10)
val jdbcUsername = "<SQL DB ADMIN USER>"
val jdbcPwd = "<SQL DB ADMIN PWD>"
val jdbcHostname = "servername.database.windows.net”
val jdbcPort = 1433
val jdbcDatabase ="<AZURE SQL DB NAME>“
val jdbc_url =
s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database
=${jdbcDatabase};encrypt=true;trustServerCertificate=fa
lse;hostNameInCertificate=*.database.windows.net;loginT
imeout=60;“
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPwd}")
val sqlTableDf = spark.read.jdbc(jdbc_url, “dbo.Tbl1",
connectionProperties)
// Construct a Spark DataFrame from SQL Pool table
var df = spark.read.sqlanalytics("sql1.dbo.Tbl1")
// Write the Spark DataFrame into SQL Pool table
df.write.sqlanalytics(“sql1.dbo.Tbl2”)
従来型 Synapse での Scala
%%spark
val df = spark.read.sqlanalytics("sql1.dbo.Tbl1")
df.createOrReplaceTempView("tbl1")
%%pyspark
sample = spark.sql("SELECT * FROM tbl1")
sample.createOrReplaceTempView("tblnew")
%%spark
val df = spark.sql("SELECT * FROM tblnew")
df.write.sqlanalytics(“sql1.dbo.tbl2",
Constants.INTERNAL)
Synapse での Python
取り込み、加工、可視化の原則は
変わらない
Store
Transform QueryIngest
Azure Data Lake Storage Gen2
SQL Pool
SQL serverless
クラウド デー
タ
SaaS データ
オンプレミス
データ
デバイス デー
タ
Power BI
Azure
Machine Learning
探検 理解
小さなサイズ
信頼しない
• 早めに失敗
外に
だけ
嫌い
結果
視野を
広げて
https://docs.microsoft.com/ja-jp/azure/synapse-analytics/get-started
Step-by-Step Achievements スムーズな学習環境
 無料
 日本語対応
 ブラウザーのみでOK
ハンズオン環境も含めて
 ダウンロード可能なサンプ
ルコード
 Product/Service, 技術レベル,
job role, などに応じたガイダ
ンス
 Video, チュートリアル, ハンズ
オン
 スキルアップを促す
 ユーザー プロファイ
ル毎に
カスタマイズ
www.microsoft.com/learn
aischool.microsoft.com
www.microsoft.com/ja-jp/events
Invent with purpose.

SQL Server 使いのための Azure Synapse Analytics - Spark 入門

  • 1.
    畠山 大有 |Daiyu Hatakeyama | @dahatake Architect && Software Engineer && Applied Data Scientist Microsoft Japan SQL Server 使いのための Azure Synapse Analytics Spark 入門
  • 3.
    HDFS 分散ファイルシステム“HDFS” (Hadoop DistributedFile System)  複数のコンピューターを束ねて、 一つの仮想的なファイルシステムを提供  Hadoop クラスタに属する全ての ノードが同じ名前空間を共有  各ファイルは 64 MB ~ 256 MB 程度の ブロックに分割されて、複数ノードに分散  ブロックサイズが大きいのは、 シーケンシャルアクセスに特化している ため  各断片は最低 3 ノードに複製され、 ノード障害への耐性を持つ  一つのファイルの複数の部分を、複数の コンピューターで同時に処理することで、 処理を高速化することができる 断片 1 断片 2 断片 3 断片 4 断片 1 断片 2 断片 3 断片 4 ファイル 1 断片 1 断片 2 断片 3 断片 4 ファイル 4 断片 1 断片 2 断片 3 断片 4
  • 4.
    分散プログラミングモデル “MapReduce” 2013-08-26 23:59:03W3SVC1 192.168.0.1 GET /… 2013-08-26 23:59:05 W3SVC1 192.168.0.1 GET /… 2013-08-26 23:59:25 W3SVC1 192.168.0.1 GET /… 2013-08-27 00:01:02 W3SVC1 192.168.0.1 GET /… 2013-08-27 00:02:04 W3SVC1 192.168.0.1 GET /…  名前は一見難しげですが、実際には単純です (だからこそスケーラビリティがあります)  例えば右のような Web のアクセスログがあるとして、  伝統的なテキスト処理ツールによる集計はこのようなものですが、 $ grep /Login.aspx access_log | sort | uniq –c > output.txt 対象ファイルの全行を頭から舐めて 何らかの処理をする(この場合は検索) 中間結果を集計の ためにソートする ソートされたデータを 数え上げて結果を得る MapReduce はこういった処理をクラスター上で並列分散実行する仕組みです Map Reduce
  • 5.
    SQL Query Data Frame Unresolved LogicalPlan Logical Plan Optimized Logical Plan Selected Physical Plan RDDsPhysical Plans CostModel Catalog Analysis Logical Optimization Physical Planning Code Generation Catalyst 分散処理 オプティマイザー インメモリ
  • 7.
    項目 2013 年の記録 Hadoop Spark100 TB (2014年) Spark 1 PB (2014年) データ サイズ 102.5TB 100 TB 1 PB (≒1000 TB) 処理時間 72 分 23 分 234 分 ノード数 2100 206 190 コア数 50,400 6,592 6,080
  • 8.
  • 9.
    9 Standalone Scheduler YARNMesos Spark SQL Spark Streaming MLlib GraphX PythonSQLR Scala Java
  • 10.
    • 外部のデータベース、構造化ファイル、 Hive テーブル等、様々なデータソースにク エリを実行することができる •SQL と HiveQL の両方が使える • Python, Scala and Java からも実行できる • Spark structured streaming もサポート を オプティマイザとして採用
  • 11.
    Spark での ETLQuery の例 Read Table 1 Read Table 2 Join Filter Write
  • 12.
    • カラムストア 圧縮 スキーマ Col. ACol. B a1 ... ak ak+1 ... an b1 ... bk bk+1 ... bn a1 ... ak b1 ... bk ak+1 ... an bk+1 ... bn Row group 1 Row group 2 Column chunk A1 Column chunk B1 Column chunk A2 Column chunk B2 Col. chunk A1 Col. chunk B1 Col. chunk A2 Col. chunk B2 Footer Header Data Header Data Page ... Row group 1 Col. chunk A1: 0, 1000 Col. chunk B1: 1000, 500 Row group 2 Col. chunk A2: 1500, 2000 Col. chunk B2: 3500, 500 ... 論理構造 物理構造
  • 14.
    Metric Result Comment Serializedsize Parquet is 20-40% smaller than Bond Columnar format -> better compression Serialization throughput Parquet is 3-6x faster than Bond Cheaper compression codec Deserialization throughput Parquet is 1.5-3x faster than Bond Cheaper string encoding (UTF-8 vs UTF-16) Query throughput: point lookup Parquet is 4x faster than Bond Most columns are not deserialized Query throughput: Scrubbing Parquet is 4x faster than Bond Most columns are not deserialized Query throughput: LogsToMetrics Parquet is 1.5x faster than Bond Better deserialization throughput Query throughput: SecurityWorkflow Parquet is as fast as Bond Data format is not a bottleneck
  • 15.
    Group By がAvro より 2.6倍程度 高速 全件スキャンで、Avro より 2倍以上高速 ファイルサイズが Avro より 25% 小さい。圧縮していないCSVより も 82%小さい
  • 16.
  • 17.
    delta dataframe.write .format("parquet") .partitionBy(“date") .save("/path/to/parquet") CREATE TABLE events( date DATE, eventId STRING, eventType STRING) USING parquet OPTIONS (path = ‘/path/to/parquet' ) PARTITIONED BY (date) CREATE TABLE events_delta USING delta LOCATION ‘/path/to/delta' dataframe.write .format(“delta") .partitionBy(“date") .save("/path/to/delta")
  • 18.
  • 20.
    • Apache Spark2.4 • Linux Foundation Delta Lake 0.4 support • .Net Core 3.0 support • Python 3.6 + Anaconda support • 他の Azure Synapse services との連携 • セキュリティとログイン • メタデータ • プロビジョニング • nteract ベースの notebooks • 高速な SQL pools へのデータロード • よくある利用シナリオ • データ準備 / Data Engineering / ETL • Spark ML / Azure ML integration • 効果的なリソースの使用 • 迅速に開始 • オートスケール。最小3 node • 自動一時停止 • 様々なプログラミング言語のサポート • .Net (C#), PySpark, Scala, Spark SQL, Java
  • 21.
    SQL Server SynapseSpark Pool ファイル形式 独自バイナリー : mdf,ndf,ldf Parquet など ファイルの場所 ファイルとして指定 HDFS: 実際には Azure Data Lake Storage Gen 2 スケールアップ コンピューターのスペックアップ コンピューターのスペックアップ スケールアウト (Option) SQL Server Big Data Cluster Apache Hadoop YARN クエリエンジン SQL Engine Spark Engine 実行計画 内部管理: Cost base Optimizer Spark ベース: Spark 実行プラン クエリ実行 SQL Engine 内部処理 Executor による Scala - Java ベースの実行 機械学習 SQL Server Machine Learning service – R / Python SparkML グラフクエリ SQL Graph GraphX 管理ツール SQL Server Management Studio | Azure Data Studio Spark UI 開発言語 ODBC/OLEDB/JDBC など各種ライブラ リーから多くの開発言語に対応 Python / R / Spark SQL / Scala / Java / .NET
  • 22.
    Spark Instance VM –001 Node Agent Hive Metastore YARN RM - 01 Zookeeper - 01 Livy - 01 VM – 002 Node Agent YARN RM - 02 Zookeeper - 02 VM – 003 Node Agent YARN NM - 03 Zookeeper - 03 VM – 004 Node Agent YARN NM - 04 Subnet VM – 005 Node Agent Synapse Cluster Service (Control Plane) Heartbeat sequence Azure Resource Provider Create VMs with Specialized VHD Provision Resources Heartbeats Create Cluster YARN NM - 02 YARN NM - 01 Spark Executors Spark Executors Spark Executors Spark Executors
  • 23.
    Synapse Service Job ServiceFrontend Spark API Controller … Gateway Resource Provider DB Synapse Studio AAD Auth Service Instance Creation Service DB Azure Job Service Backend Spark Plugin DB … Spark Instance VM VM VM VM VM VM
  • 24.
  • 25.
    component versions, auto-pause PyPi(pip freeze) のファイルフォー マット。 一般的には requirements.txt
  • 26.
    In the Portal Specifythe new requirements while creating Spark Pool in Additional Settings blade
  • 27.
  • 30.
    Collect Data ファイルの読み取り SQL Databases へのクエ リ WebServices 呼び出し Web Pages のスクレイ プ Prepare Data データの探索 データの妥当性検証 データのクリーンアップ データの特徴理解 Train Model 学習用データセット作成 実験環境 学習の評価 学習状況の可視化 Evaluate Model モデルのテスト モデルの比較 モデルの妥当性検証 評価状況の可視化 Deploy Model モデルのエクスポー ト ジョブの準備 コンテナのデプロイ 再パッケージング Notebook (Synapse Spark) 実行可能なもの: - Python code - R code - SQL queries - Shell commands
  • 34.
    コード か テキストの追加 コード もしくは テキストの 削除 順番の変更
  • 36.
    Magic Command 説明 %%pysparkPython %%spark Scala %%sql Spark SQL %%csharp Spark.NET C# %%time セルの実行時間 %%capture stdout, stderror %%writefile セルの内容をファイルに出力 Cell の Magic Command セル単位で実行環境を設定する 最初の行に記載する必要があり いずれも Spark 環境での動作
  • 38.
  • 39.
  • 41.
  • 42.
  • 43.
    SQL Pool のtable を DataFrame に直接読み込める
  • 49.
    2 Analytics runtimes SQL Common dataestate Shared meta data Unified experience Synapse Studio Store Azure Data Lake Storage Gen2 Power BI Azure Machine Learning クラウド デー タ SaaS データ オンプレミス データ デバイス デー タ
  • 51.
    …これらを試してみる • Spark で事前処理 •複雑な CSV の読み込みに Polybase ではなく、COPY コマンドを試して みる
  • 55.
    Analytics Runtimes SQL serverless SQLRuntime 共有クラスター 自動スケール 共有ストレージ SQL pool SQL Runtime プロビジョン クラ スター 現在、手動スケールの み 共有 ストレー ジ 専用 ストレージクラスター × N 個を作成可能 クラスター × N 個を作成可能 Spark pool Spark Runtime プロビジョン クラ スター 自動/手動スケール 共有ストレージ データ統合機能 パイプライン/データ フロー Azure Data Lake Storage Gen2 ※現在、Spark pool から SQL Analytics にメタデータ共有可能なのは、Parquet ファイル形式のマネージドテーブル/外部テーブルで、SQL pool への共有は Synapse Studio 開発/監視/管理
  • 57.
    • リソース状況認識型タスクスケジューラーによる 高い同時実行性 • 交換理性:自己チューニング型のワークロード マネジメント:キャパシティプランニング, アクセス制御, リソース ガバナンス Azure Storage Synapse SQL query service Power BI Azure Data Studio SSMS Read and write data files Sync table definitions Synapse Spark pool
  • 58.
    Spark Table 作成 #ADLS からファイルを読み込む df = spark.read.load('abfss://wwi- 02@asadatalakedahatake.dfs.core.windows.net/sale- small/Year=2019/Quarter=Q1/Month=1/Day=20190101/sale-small-20190101- snappy.parquet', format='parquet') display(df.limit(10)) # Spark Table に保存 df.write.mode("overwrite").saveAsTable("default.salessmall") # クエリ実行 df = spark.sql("SELECT * FROM default.salessmall") df.show(10)
  • 59.
    val jdbcUsername ="<SQL DB ADMIN USER>" val jdbcPwd = "<SQL DB ADMIN PWD>" val jdbcHostname = "servername.database.windows.net” val jdbcPort = 1433 val jdbcDatabase ="<AZURE SQL DB NAME>“ val jdbc_url = s"jdbc:sqlserver://${jdbcHostname}:${jdbcPort};database =${jdbcDatabase};encrypt=true;trustServerCertificate=fa lse;hostNameInCertificate=*.database.windows.net;loginT imeout=60;“ val connectionProperties = new Properties() connectionProperties.put("user", s"${jdbcUsername}") connectionProperties.put("password", s"${jdbcPwd}") val sqlTableDf = spark.read.jdbc(jdbc_url, “dbo.Tbl1", connectionProperties) // Construct a Spark DataFrame from SQL Pool table var df = spark.read.sqlanalytics("sql1.dbo.Tbl1") // Write the Spark DataFrame into SQL Pool table df.write.sqlanalytics(“sql1.dbo.Tbl2”) 従来型 Synapse での Scala %%spark val df = spark.read.sqlanalytics("sql1.dbo.Tbl1") df.createOrReplaceTempView("tbl1") %%pyspark sample = spark.sql("SELECT * FROM tbl1") sample.createOrReplaceTempView("tblnew") %%spark val df = spark.sql("SELECT * FROM tblnew") df.write.sqlanalytics(“sql1.dbo.tbl2", Constants.INTERNAL) Synapse での Python
  • 61.
    取り込み、加工、可視化の原則は 変わらない Store Transform QueryIngest Azure DataLake Storage Gen2 SQL Pool SQL serverless クラウド デー タ SaaS データ オンプレミス データ デバイス デー タ Power BI Azure Machine Learning
  • 62.
  • 63.
  • 64.
  • 65.
    Step-by-Step Achievements スムーズな学習環境 無料  日本語対応  ブラウザーのみでOK ハンズオン環境も含めて  ダウンロード可能なサンプ ルコード  Product/Service, 技術レベル, job role, などに応じたガイダ ンス  Video, チュートリアル, ハンズ オン  スキルアップを促す  ユーザー プロファイ ル毎に カスタマイズ www.microsoft.com/learn
  • 66.
  • 67.
  • 68.