Azure Synapse Analytics SQLプールのPolyBaseについて調べましたのでメモ程度に
PolyBaseを使ったデータロード
Azure Synapse Analytics SQLプールでは様々なデータロードの方法がSQL Server同様にサポートされています。その中でもPolyBaseはデータベースへ非常に高速にデータをロード事が可能なロード方法です。Azure Synapse Analytics SQLプールが大量のデータを取り扱う特性上、大量のデータを高速にロードする方法は重要です。
PolyBaseを使ったロード方法は以下の通りです。
- データをAzure Blob Storage、Hadoop、Azure Data Lake Storage Gen2のいずれかにデータを格納
- Synapse SQLプールにてAzure Blob Storageのデータ格納場所とデータ形式を定義し外部表を作成
- Synapse SQLプールのテーブルへ外部表からInsert SELECTを実施
PolyBaseが高速な理由
3層アーキテクチャでの処理の実行
PolyBaseが高速にロードできるのには理由があります。Synapse SQLプールは1つのコントロールノード、複数のコンピュートノード、60のディストリビューションにより構成されています。Synapse SQLプールにてSELECT分等のSQLを実行する場合、複数あるコンピュートノードに処理を分割して実行し、最後コントロールノードで集計を行います。
このアーキテクチャについては以下の記事に簡単にまとめております。
Azure Synapse Analytics SQLプール(旧:SQL Data Warehouse)とは
ロード時にボトルネックになることのあるコントロールノード
一方、Synapse SQLプールにデータを投入することを考えると、コントロールノードが1つしかない為、ここがボトルネックに陥りがちです。
PolyBaseはコンピュートノードが直接データをロード
PolyBaseを使ったロードの場合はコントロールノードを利用せず、直接コンピュートノードを使ってパラレルロードを行う仕様になっているようです。これにより高速にロードすることが可能です。
なので、PolyBaseを使ったロードの場合、コンピュートノードの数やスペックによりロード性能が異なります。
終わりに
具体的なPolyBaseの手順と性能はまたどこかで検証し記載したいと思います。