接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSparkSQL Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module SparkSQLCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module SparkSQLCmdlets;
Connect-SparkSQL cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SparkSQL -Server '127.0.0.1'
Spark SQL への接続
Spark SQL への接続を確立するには以下を指定します。
- Server:SparkSQL をホストしているサーバーのホスト名、またはIP アドレス。
- Port:SparkSQL インスタンスへの接続用のポート。
- TransportMode:SparkSQL サーバーとの通信に使用するトランスポートモード。有効な入力値は、BINARY およびHTTP です。デフォルトではBINARY が選択されます。
セキュアなSpark SQL への接続
本製品 においてTLS/SSL を有効化するには、UseSSL をTrue に設定します。
Spark SQL への認証
サービスは、PLAIN、LDAP、NOSASL、KERBEROS 認証スキームを使用して認証できます。
PLAIN
PLAIN で認証するには、次の接続プロパティを設定します。
- AuthScheme:PLAIN。
- User:ログインするユーザー。
- Password:ユーザーのパスワード。
LDAP
LDAP で認証するには、次の接続プロパティを設定します。
- AuthScheme:LDAP。
- User:ログインするユーザー。
- Password:ユーザーのパスワード。
NOSASL
NOSASL を使用する場合、認証は行われません。次の接続プロパティを設定します。
- AuthScheme:NOSASL。
Kerberos
Kerberos で認証する方法についての詳細は、Kerberos の使用 を参照してください。
データの取得
Select-SparkSQL cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SparkSQL -Connection $conn -Table "Customers" -Columns @("City, CompanyName") -Where "Country='US'"Invoke-SparkSQL cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SparkSQL -Connection $conn -Table Customers -Where "Country = 'US'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myCustomersData.csv -NoTypeInformation
Select-SparkSQL からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SparkSQL -Server '127.0.0.1' PS C:\> $row = Select-SparkSQL -Connection $conn -Table "Customers" -Columns (City, CompanyName) -Where "Country = 'US'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Customers", "Columns": [ ], "City": "MyCity", "CompanyName": "MyCompanyName" }
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSpark SQL にロードします。
Import-Csv -Path C:\MyCustomersUpdates.csv | %{ $record = Select-SparkSQL -Connection $conn -Table Customers -Where ("_id = `'"+$_._id+"`'") if($record){ Update-SparkSQL -Connection $conn -Table Customers -Columns @("City","CompanyName") -Values @($_.City, $_.CompanyName) -Where "_id = `'$_._id`'" }else{ Add-SparkSQL -Connection $conn -Table Customers -Columns @("City","CompanyName") -Values @($_.City, $_.CompanyName) } }