Azure Data Lake Storage データをMySQL にレプリケーションするPowerShell スクリプト

詳細情報をご希望ですか?

無償トライアル:

ダウンロードへ

製品の詳細情報へ:

Azure Data Lake Storage Data Cmdlets

Azure Data Lake Storage データにリアルタイム連携を実現するPowerShell Cmdlets。Cmdlets を使って、SQL Server と同感覚で多様なデータにリアルタイムアクセス。



PowerShell でシンプルなスクリプトを記述し、Azure Data Lake Storage data をMySQL データベースにレプリケーション(複製)。

CData Cmdlets for Azure Data Lake Storage をつかって、PowerShell からリアルタイムAzure Data Lake Storage data に連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for Azure Data Lake Storage およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。

まずは、PowerShell でAzure Data Lake Storage への接続を行います。レプリケーションは4つのステップがあります。

Authenticating to a Gen 1 DataLakeStore Account

Gen 1 uses OAuth 2.0 in Azure AD for authentication.

For this, an Active Directory web application is required. You can create one as follows:

  1. Sign in to your Azure Account through the .
  2. Select "Azure Active Directory".
  3. Select "App registrations".
  4. Select "New application registration".
  5. Provide a name and URL for the application. Select Web app for the type of application you want to create.
  6. Select "Required permissions" and change the required permissions for this app. At a minimum, "Azure Data Lake" and "Windows Azure Service Management API" are required.
  7. Select "Key" and generate a new key. Add a description, a duration, and take note of the generated key. You won't be able to see it again.

To authenticate against a Gen 1 DataLakeStore account, the following properties are required:

  • Schema: Set this to ADLSGen1.
  • Account: Set this to the name of the account.
  • OAuthClientId: Set this to the application Id of the app you created.
  • OAuthClientSecret: Set this to the key generated for the app you created.
  • TenantId: Set this to the tenant Id. See the property for more information on how to acquire this.
  • Directory: Set this to the path which will be used to store the replicated file. If not specified, the root directory will be used.

Authenticating to a Gen 2 DataLakeStore Account

To authenticate against a Gen 2 DataLakeStore account, the following properties are required:

  • Schema: Set this to ADLSGen2.
  • Account: Set this to the name of the account.
  • FileSystem: Set this to the file system which will be used for this account.
  • AccessKey: Set this to the access key which will be used to authenticate the calls to the API. See the property for more information on how to acquire this.
  • Directory: Set this to the path which will be used to store the replicated file. If not specified, the root directory will be used.

Azure Data Lake Storage データの取得

  1. モジュールのインストール:

    Install-Module ADLSCmdlets
  2. Azure Data Lake Storage への接続:

    $adls = Connect-ADLS -Schema $Schema -Account $Account -FileSystem $FileSystem -AccessKey $AccessKey
  3. 取得ターゲットのリソースの取得:

    $data = Select-ADLS -Connection $adls -Table "Resources"

    Invoke-ADLS cmdlet を使って、SQL-92 クエリを使用することもできます:

    $data = Invoke-ADLS -Connection $adls -Query 'SELECT * FROM Resources WHERE Type = @Type' -Params @{'@Type'='FILE'}
  4. 戻り値からカラム名のリストを保存します。

    $columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name

Azure Data Lake Storage データをMySQL データベースに入れます

カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。

  1. モジュールのインストール:

    Install-Module MySQLCmdlets
  2. MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:

    $mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
  3. Azure Data Lake Storage、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、Azure Data Lake Storage のリソース(Resources)と同じテーブル名を持っている必要があります。

    $data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Resources" -Columns $columns -Values $values }

これで、Azure Data Lake Storage データをMySQL に複製できました。これで、分析、BI などでAzure Data Lake Storage データをMySQL から使うことができるようになります。

Notes

  • 一度PowerShell でAzure Data Lake Storage とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:

    Select-ADLS -Connection $adls -Table "Resources" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Resources" -Columns $columns -Values $values }
  • 別のPowerShell モジュールで、Azure Data Lake Storage を別のデータベースに複製する場合、Select-ADLS cmdlet のデータから、カラム、接続およびテーブルを除外する方がいいでしょう。これらのデータは、CData cmdlet からデータを移動する際にのみ必要なものだからです。:

    $columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}