SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Azure Synapse Analytics (ワークスペース) を試してみる – Azure Synapse Link –

one comment

Build 2020 のキーノートでも解説されていた Synapse Analytics を少し触ってみましたので、忘れないうちにメモを。

公式のアナウンスとしては、次の情報になるかと思います。

ドキュメントは次のものを参照するとよいかと。

 

Azure Synapse Link とは?

Azure Synapse Link は現時点では、Cosmos DB で有効にすることができる、今後、Azure SQL Database / PostgreSQL / MySQL もサポートを計画しているそうです。

現時点では、Synapse Link は SQL API で有効化することができます。
(Mongo / Cassandra については、限定的な Preview となっており、現時点では Public で使うことはできないようです)

SQL API であれば「Features」から有効にすることができます。

image

Synapse Link はクラウドネイティブな Hybrid Transactional And Analytics Prosessing (HTAP) を実現することができる機能であり、Cosmos DB と Synapse Analytics をシームレスに統合することが可能となります。

Synapse Link を有効にすると、このように、Spark で Cosmos DB のデータを読み込み、SQL プールにロードするというような処理を簡単に記述することができます。

image

Cosmos DB からのデータの読み取りについては、ChangeFeed を使用して Streaming により読み込むということもできます。(Streaming で Cosmos DB に書き込むこともできます)
うまく活用することで、Cosmos DB を使用したラムダアーキテクチャが組みやすくなるケースが出てきそうですね。
image

Synapse Link を使用することで、Cosmos DB で発生しているトランザクションデータを Data Frame として読み込み、効率的に処理がを行うことができます。

上記のコードでは、「cosmos.oltp」としてアクセスをしています。
Cosmos DB で、Analytics Store (分析ストア) を有効にしているコンテナーについては、「cosmos.olap」として、トランザクションで使用している領域に負荷をかけることなく、分析ストアにアクセスをすることもできるようになっています。
image

処理の特性に合わせ、OLTP / OLAP のどちらの領域のデータにアクセスするかを変更することができ、ストリーミング処理と Change Feed を組み合わせて、差分データを処理するというようなことも簡単に記述することができるのではないでしょうか。

現時点では、SQL オンデマンドに対しの、ランタイムサポートが Contuct As になっているため、利用できなさそうなのですが、Azure Analytics: Clarity in an instant / Azure: Invent with Purpose では、SQL オンデマンドを使用したアクセスも行われています。

SQL オンデマンドから利用する場合、OPENROWSET で、CosmosDB にアクセスを行うということも可能となるようです。

image

単純に OPENROWSET で Cosmos DB のデータを取得できるというだけではなく、PREDICT 関数 にデータを渡すこともでき、Cosmos DB のデータを SQL Server のリアルタイム スコアリングの機能で機械学習による分析をするということもできるようです。
image

Synapse Link を使用することで、Synapse Analytics が持っている様々な機能と Cosmos DB のデータをシームレスに統合することができるようになることで、新しい洞察を得ることができるようになるのではないでしょうか。

 

Cosmos DB のデータのアクセス

Synapse Link を有効にした、Cosmos DB を Synapse Workspace のリンクサービスとして登録することで、このように表示が行われます。

image

Document01 と Document02 ではアイコンが異なっていますね。

Document01 については、Analytics Store を有効にしていないコンテナーとなります。
このアイコンのコンテナーについては、OLTP としてのアクセスが可能です。

Document02 は有効にしているコンテナーです。
(現時点では、Analytics Store はコンテナーを作成する際に有効化できるそうです)
このアイコンのコンテナーについては、HTAP として利用することができ、OLTP / OLAP でのアクセスが可能となります。

Azure Synapse Link (preview) for Azure Cosmos DB supported features に記載されていますが、OLTP / OLAP の操作の違いなどは、Synapse Studio で生成できる Notebook を見てみるとわかりやすいかもしれません。

 

OLTP 用になっているコンテナーについては、次のような Notebook を作成することができます。

image

HTAP 用となっている場合は、選択可能な Notebook が増えます。

image

HTAP の場合は、Analytics Store からデータを読み出すものと、Analytis Store のデータで Spark のテーブルを作成するための Notebook の生成機能が追加されていますね。

今回、大まかな動作の検証を行いたくて、作成した Notebook のコードがこちらになるのですが、これだけで Cosmos DB からデータを読み込んで、SQL プールにテーブルを作成してデータをロードするということを簡単に記述することができます。
image

次のような設定に気を付けておけば、最初のアクセスの検証はできるかと思います。

  • Synapse Studio にログインしている AAD のユーザーに、ワークスペースに設定している、Azure Data Lake Storage Gen2 の「ストレージ BLOB データ所有者」を設定する
    • 強すぎる権限だと思いますが検証のため、これを設定しています。
    • ADL Gen2 に適切な権限がないと、SQL プールにロードするデータを ADL Gen 2に作成する際に権限不足でエラー (403 エラー) となります
  • データロード先の SQL プールの DB に、Synapse Studio にログインしている AAD のユーザーに 前提条件 に記載されている DB ロールを設定する
    • SQL プールの DB に適切な権限が付与されていない場合「NT AUTHORITY\ANONUMOUS」の接続のエラーが発生すると思います。
    • MS アカウントや他の Azure AD のテナントのユーザーをゲスト接続させて、Synapse Studio にアクセスしていると権限周りが良く分からなくなるので、Synapse Studio と同一テナントの AAD ユーザーで最初は検証した方が良いかと。

今回は Streaming を使用せずにデータのロードを行いましたが、Apache Spark を使用したデータのインポートとエクスポート / Query Azure Cosmos DB Analytical Store with Apache Spark for Azure Synapse Analytics を確認すると、様々な方法で、Synapse Link を使用することができるのではないでしょうか。

Share

Written by Masayuki.Ozawa

5月 20th, 2020 at 6:26 pm

Posted in Synapse Analytics

Tagged with

One Response to 'Azure Synapse Analytics (ワークスペース) を試してみる – Azure Synapse Link –'

Subscribe to comments with RSS or TrackBack to 'Azure Synapse Analytics (ワークスペース) を試してみる – Azure Synapse Link –'.

  1. […] SE の雑記Azure Synapse Analytics (ワークスペース) を試してみる – Azure Synapse L…https://blog.engineer-memo.com/2020/05/20/azure-synapse-analytics-%e3%83%af%e3%83%bc%e3%82%af%e3%82%b9%e3%83%9a%e3%83%bc%e3%82%b9-%e3%82%92%e8%a9 […]

Leave a Reply