Cmdlets for Databricks

Build 24.0.9062

接続の確立

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でDatabricks Cmdlets を使用する例を示します。

インストールおよび接続

PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。

Install-Module DatabricksCmdlets

プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。

Import-Module DatabricksCmdlets;

Connect-Databricks cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-Databricks -Server "127.0.0.1" -HTTPPath "MyHTTPPath"" -User "MyUser" -Token "MyToken"

Databricks への接続

Databricks クラスターに接続するには、以下のプロパティを設定します。

  • Database:Databricks データベース名。
  • Server:Databricks クラスターのサーバーのホスト名
  • HTTPPath:Databricks クラスターのHTTP パス。
  • Token:個人用アクセストークン。この値は、Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。

Databricks インスタンスで必要な値は、クラスターに移動して目的のクラスターを選択し、 Advanced Options の下にあるJDBC/ODBC タブを選択することで見つけることができます。

Google Cloud Storage の設定

本製品 は、CSV ファイルのアップロードにDBFS、Azure Blob Storage、およびAWS S3 をサポートしています。

DBFS Cloud Storage

クラウドストレージにDBFS を使用するには、CloudStorageTypeDBFS に設定します。

Azure Blob Storage

次のプロパティを設定します。

  • CloudStorageTypeAzure Blob storage
  • StoreTableInCloud:新しいテーブルを作成する際にクラウドストレージにテーブルを保存する場合は、True
  • AzureStorageAccount:Azure ストレージアカウント名。
  • AzureAccessKey:Databricks アカウントに関連付けられているストレージキー。Azure ポータル(ルートアカウントを使用)経由で確認してください。ストレージアカウントを選択し、Access Keys をクリックしてこの値を取得します。
  • AzureBlobContainer:Azure Blob ストレージコンテナの名前に設定。

AWS S3 Storage

次のプロパティを設定します。

  • CloudStorageTypeAWS S3
  • StoreTableInCloud:新しいテーブルを作成する際にクラウドストレージにテーブルを保存する場合は、True
  • AWSAccessKey:AWS アカウントのアクセスキー。この値には、AWS セキュリティ認証情報ページから取得できます。
  • AWSSecretKey:AWS アカウントのシークレットキー。この値には、AWS セキュリティ認証情報ページから取得できます。
  • AWSS3Bucket:AWS S3 バケット名。
  • AWSRegion:Amazon Web サービスのホスティングリージョン。AWS Region の値は、Amazon S3 サービスのBuckets List ページに移動して取得できます。例:us-east-1

Databricks への認証

CData は、次の認証スキームをサポートしています。

  • Basic
  • 個人用アクセストークン
  • Azure Active Directory(AD)
  • Azure サービスプリンシパル

Basic

Basic 認証には、ユーザー名とパスワードが必要です。以下を設定します。

  • AuthSchemeBasic
  • User:ユーザーネーム。これはデフォルト値("Token")をオーバーライドします。
  • Token:パスワード。

個人用アクセストークン

認証するには、次を設定します。

  • AuthSchemePersonalAccessToken
  • Token:Databricks サーバーへの接続に使用するトークン。Databricks インスタンスのユーザー設定ページに移動してアクセストークンタブを選択することで取得できます。

Azure Active Directory

認証するには以下の手順に従います。

  1. Azure ポータルのAzureAD(現在はMicrosoft Entra ID)エンドポイントにアプリケーションを登録します。アプリケーションの作成と登録の方法は、Azure portal でアプリを構成する を参照してください。あるいは、すでに登録されているAzureAD アプリケーションを使用することもできます。

  2. 次のプロパティを設定します。

    • AuthSchemeAzureAD
    • AzureTenant:AzureAD アプリケーションの"概要"ページにある"ディレクトリ(テナント)ID"。
    • OAuthClientId:AzureAD アプリケーションの"概要"ページにある"アプリケーション(クライアント)ID"。
    • CallbackURL:AzureAD アプリケーションの"認証"ページの"リダイレクトURI"。

  3. 接続すると、認証を促すWeb ページが開きます。認証に成功すると、接続が確立されます。

接続文字列の例は次のとおりです。

"Server=https://adb-8439982502599436.16.azuredatabricks.net;HTTPPath=sql/protocolv1/o/8439982502599436/0810-011933-odsz4s3r;database=default;
AuthScheme=AzureAD;InitiateOAuth=GETANDREFRESH;AzureTenant=94be69e7-edb4-4fda-ab12-95bfc22b232f;OAuthClientId=f544a825-9b69-43d9-bec2-3e99727a1669;CallbackURL=http://localhost;"

Azure AD サービスプリンシパル

認証するには、次のプロパティを設定します。

  • AuthSchemeAzureServicePrincipal
  • AzureTenantId:Microsoft Azure Active Directory のテナントID。
  • AzureClientId:Microsoft Azure Active Directory アプリケーションのアプリケーション(クライアント)ID。
  • AzureClientSecret:Microsoft Azure Active Directory アプリケーションのアプリケーション(クライアント)シークレット。

データの取得

Select-Databricks cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-Databricks -Connection $conn -Table "[CData].[Sample].Customers" -Columns @("City, CompanyName") -Where "Country='US'"
Invoke-Databricks cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-Databricks -Connection $conn -Table [CData].[Sample].Customers -Where "Country = 'US'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\my[CData].[Sample].CustomersData.csv -NoTypeInformation

Select-Databricks からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-Databricks -Server "127.0.0.1" -HTTPPath "MyHTTPPath"" -User "MyUser" -Token "MyToken"
PS C:\> $row = Select-Databricks -Connection $conn -Table "[CData].[Sample].Customers" -Columns (City, CompanyName) -Where "Country = 'US'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "[CData].[Sample].Customers",
  "Columns":  [

  ],
  "City":  "MyCity",
  "CompanyName":  "MyCompanyName"
} 

データの削除

以下は、抽出条件に合うあらゆるレコードを削除します。

Select-Databricks -Connection $conn -Table [CData].[Sample].Customers -Where "Country = 'US'" | Remove-Databricks

データの変更

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをDatabricks にロードします。

Import-Csv -Path C:\My[CData].[Sample].CustomersUpdates.csv | %{
  $record = Select-Databricks -Connection $conn -Table [CData].[Sample].Customers -Where ("_id = `'"+$_._id+"`'")
  if($record){
    Update-Databricks -Connection $conn -Table [CData].[Sample].Customers -Columns @("City","CompanyName") -Values @($_.City, $_.CompanyName) -Where "_id  = `'$_._id`'"
  }else{
    Add-Databricks -Connection $conn -Table [CData].[Sample].Customers -Columns @("City","CompanyName") -Values @($_.City, $_.CompanyName)
  }
}

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062