11. Azure Data Lake とは
HDInsight
Spark, Hive,
Storm, Kafka
Data Lake
Analytics
Data Lake Store
WebHDFS
YARN
Azure
Databricks
ストレージ
Azure Data Lake Store (ADLS)
• どんなフォーマットのデータでも無制限に格納
できるストレージ
• 分散型で分析処理パフォーマンスが高い
• OSS との親和性
分析ツール
Azure Data Lake Analytics (ADLA)
• サーバレスの分析エンジン
• 親しみのある SQL に近い U-SQL 言語
• 柔軟なスケールで大量データ処理が得意
• ジョブ単位の課金
23. ADLS データの操作: Visual Studio
Visual Studio でも ADLS 上のファイルやフォルダ管理が可能
データのフォーマットに基づいて、読み取りクエリの自動生成も可能
24. ADLS データの操作: Azure Data Factory
他のデータソースから ADLS にデータをコピーすることが可能
スケジュール実行や、データの変換アクティビティも実行可能
25. ADLS と BLOB の比較
Azure Data Lake Azure BLOB Storage
目的 データ分析に最適化されたストレージ 汎用オブジェクト ストア
概念と構造 ファイルとフォルダの階層型の構造 コンテナーと BLOB 形式のフラットな構造
認証 Azure AD アクセスアカウントキーと SAS(Shared Access Signature)
承認
POSIX アクセス制御リスト (ACL)
Azure AD の ID に基づく
ファイルやフォルダレベルに設定可能。
アカウントレベルの承認はアカウントアクセスキー
アカウント、コンテナー、BLOB レベルの承認は SAS
分析パフォーマンス
並列分散で分析に最適化
高スループットおよび高 IOPS
分析ワークロードに最適化されていない
容量制限 無制限 ストレージアカウントあたり 500TiB まで
VS
26. Azure Data Lake Analytics (ADLA) とは
ADLA
Azure SQL DW Azure SQL DB
Azure
Storage Blobs
ADLS SQL Server
Azure VM
サーバ レスの分析クエリ サービス
きめ細かい分析処理を大量データに最適化
「U-SQL」クエリ言語を使用 @rows =
EXTRACT
name string,
id int
FROM “/data.csv”
USING Extractors.Csv( );
OUTPUT @rows
TO “/output.csv”
USING Outputters.Csv();
規定のストレージ (ADLS or Blob)
だけでなく、SQL DW、SQL
Server などにもクエリ実行が可能
28. U-SQL という言語
U-SQL で分析処理を記述し、
ADLA にサブミット。
分散処理の実行プランを自動
的に生成。
実行プランに基づいて、ノード
が自動的に割り当てられ、処
理が実行される。
@rows =
EXTRACT
name string,
id int
FROM “/data.csv”
USING Extractors.Csv( );
OUTPUT @rows
TO “/output.csv”
USING Outputters.Csv();
✓ SQL ライクなシンプルなクエリ言語
✓ C#, R, Python, Cognitive Services 等での拡張
✓ スキーマ定義済み、未定義のどちらでもクエリ可能
SELECT … FROM …
WHERE
GROUP BY …
HAVING
JOIN
OVER
+
29. シンプルな U-SQL の例
@tweet =
EXTRACT date string,
time string,
author string,
tweet string,
FROM “/Input/TwitterHistory.csv”
USING Extractors.Csv();
@result =
SELECT author AS author,
COUNT(*) AS tweetcount
FROM @tweet
GROUP BY author;
OUTPUT @result
TO “/Output/TwitterAnalysis.csv”
ORDER BY tweetcount DESC
USING Outputters.Csv();
① 保存されているファイルのフォー
マットを読み取って、カラム名を
付与
② 付与したカラム名を使ってクエリ
を実行
③ 結果を CSV 形式で出力
ユーザーごとのツイート数を数えたい
30. C# 関数を利用した U-SQL
@attribute =
SELECT new SQL.ARRAY<string>(col1.Split(',')) AS y
FROM @csv;
@country =
SELECT new SQL.ARRAY<string>(y[3].Split('=')) AS z
FROM @attribute;
@output =
SELECT
Region.ToUpper() AS NewRegion
FROM @searchlog;
文字列を大文字に変換
[col1] の中をカンマで分割
U-SQL 内で C# 関数を使用することで柔軟な処理を実行することが可能
col1 col2
name=hideo,age=50,div=tech,country=jp Microsoft
name=toshio,age=60,div=sales,country=us Microsoft
こういう CSV ファイルがあったとして
“jp”や”us”を取り出したい
4番目の要素を = で分割
→”jp” や “us” が取り出せる
31. [ご参考] U-SQL のデータ型・集約関数・結合
ビルトインの集約関数
• AVG
• ARRAY_AGG
• COUNT
• FIRST
• LAST
• MAP_AGG
• MAX
• MIN
• STDEV
• SUM
• VAR
データ型
Numeric
byte, byte?
sbyte, sbyte?
int, int?
uint, unint?
long, long?
decimal, decimal?
short, short?
ushort, ushort?
ulong, unlong?
float, float?
double, double?
Text
char, char?
string
Complex
MAP<K>
ARRAY<K,T>
Temporal DateTime, DateTime?
Other
bool, bool?
Guid, Guid?
Byte[]
http://usql.io/
結合
• INNER JOIN
• LEFT or RIGHT or FULL OUTER JOIN
• CROSS JOIN
• SEMIJOIN
• Equivalent to IN subquery
• ANTISEMIJOIN
その他、パラメータの利用やウィンドウ関数等詳細情報やチュートリアルは左記 URL を参照
45. Federated Queries
Data Lake
Analytics
Azure のデータストアにクエリを実行する
✓ データを移動させずに各データストア
にクエリを実行
✓ データの移動にかかる時間やコスト
を抑える
✓ クエリをプッシュダウンしてリモート側
で実行することも可能
Azure SQL
DW
Azure SQL
DB
SQL Server
Azure VM
Azure Data
Lake Store
Azure
Storage
Blobs
46. データパイプライン管理
Azure Data Factory
HDInsight
Cosmos DB
SQL DB
SQL DW
Hadoop
での分析
グローバル分散
NoSQL
マネージド
RDBMS
スケールアウト
データ ウェアハウス
Data Factory
40 以上のデータソースを
サポート
オンプレミス、Azure、
Azure外のクラウド
Data Lake
Data Factory を使用して Azure 内外の様々な
サービスとの連携が可能
48. コマンドラインを使ったADLA の操作: Azure CLI
az dla job submit --account アカウント名 --job-name ジョブ名 --script U-SQL スクリプトファイル
ジョブのサブミット
az dla job show --account アカウント名 --job-identity ジョブ ID
ジョブの詳細表示
シンプルなコマンドで ADLA の操作が可能。Windows, macOS, Linux で利用可能。
az dla job list --account アカウント名
ジョブの一覧表示
https://docs.microsoft.com/ja-jp/azure/data-lake-analytics/data-lake-analytics-get-started-cli2
49. コマンドラインを使った ADLS の操作: Azure CLI
az dls fs upload --account アカウント名 --source-path 元ファイル名 --destination-path アップロード先
ファイルのアップロード
az dls fs list --account アカウント名 --path フォルダ名
ファイルとフォルダのリスト表示
シンプルなコマンドで ADLS の操作が可能。Windows, macOS, Linux で利用可能。
az dls fs preview --account アカウント名 --path ファイル名 --length 読み取るバイト数
ファイルのプレビュー表示
https://docs.microsoft.com/ja-jp/azure/data-lake-store/data-lake-store-get-started-cli-2.0
57. 参考情報①
ドキュメント・ブログ
• Azure Data Lake
https://azure.microsoft.com/ja-jp/solutions/data-lake/
• Azure Data Lake Blog
https://blogs.msdn.microsoft.com/azuredatalake/
• U-SQL
http://usql.io/
• Github
https://github.com/Azure/USQL
イベント セッション動画
• いざ無制限のデータの彼方へ! ~ Azure Data Lake 開発の知識とベスト プラクティス ~
https://channel9.msdn.com/Events/de-code/2016/DBP-020
• あらゆるデータをビジネスに活用! Azure Data Lake を中心としたビック データ処理基盤のアーキテクチャと実装
https://channel9.msdn.com/Events/de-code/2017/DI12
• あらゆるデータに価値がある!アンチ断捨離ストのための Azure Data Lake
https://channel9.msdn.com/Events/de-code/2017/DI07
• AI 時代を生き抜くためのビッグデータ基盤 ~リコーの実案件で見えたAzure Data Lakeの勘所~
https://youtu.be/zfD7d0Kqk_s
58. 参考情報②
• 個人ブログ : U-SQL 入門
http://whata.hatenablog.com/
• 【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
https://aka.ms/W66jgk
• 【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
https://aka.ms/W9kcdx
• SlideShare
https://www.slideshare.net/hidwatanabe/
• de:code 2018
https://www.microsoft.com/ja-jp/events/decode/2018/
[DA11] AI / アナリティクスを支えるビッグ データ基盤 Azure Data Lake ~アーキテクチャと実践解説~