Cmdlets for Avro

Build 24.0.9062

接続の確立

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

インストールおよび接続

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

Install-Module AvroCmdlets

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

Import-Module AvroCmdlets;

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

$conn = Connect-Avro -URI "C:\folder\table.avro;"

CData Cmdlets PowerShell Module for Avro を使用すると、ローカルおよびリモートのAvro リソースに接続できます。データソースへの接続に必要なプロパティに加えて、URI プロパティをAvro リソースの場所に設定します。

ローカルファイルへの接続

ConnectionTypeLocal に設定します。ローカルファイルは、SELECT\INSERT をサポートします。

URI をAvro ファイルを含むフォルダに設定します。 C:\folder1

Cloud-Hosted Avro ファイルへの接続

本製品 はさまざまなクラウドストレージ上にホストされたAvro ファイルからデータを取得することができますが、INSERT、UPDATE、DELETE はローカルファイル以外ではサポートされていません

クラウド上のファイルをINSERT、UPDATE、DELETE する必要がある場合は、そのクラウドサービスに対応するCData 本製品 をダウンロードし(ストアドプロシージャでサポートされています)、ローカルファイルの対応する本製品 に変更を加え、そのクラウドソース用のストアドプロシージャを使ってファイルをアップロードできます。

例えば、SharePoint 上に格納されたファイルをアップデートしたい場合、CData SharePoint 本製品 のDownloadDocument プロシージャを使用してAvro ファイルをダウンロードし、CData Avro 本製品 でローカルのAvro ファイルをアップデートして、最後にSharePoint 本製品 のUploadDocument プロシージャを使って変更されたファイルをSharePoint にアップロードできます。

URI 接続プロパティの先頭にある一意の接頭辞は、本製品 が対象とするクラウドデータストアを識別するために使用され、残りのパスは目的のフォルダ(1ファイルにつき1テーブル)または単一ファイル(単一テーブル)への相対パスとなります。

Amazon S3

Amazon S3 に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeConnectionTypeAmazon S3 に設定。
  • URI:the bucket and folder:s3://bucket1/folder1 に設定。
    • Volume およびBucket を作成し、そのバケット:s3://linktobucket/symbolic link を作成した後、Cloudera Ozone に保存されているAvro リソースに接続することもできます。

Amazon S3 でホストされているAvro ファイルへの接続および認証について詳しくは、Amazon S3 への接続 を参照してください。

Azure Blob Storage

Azure Blob Storage に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeAzure Blob Storage に設定。
  • URI:コンテナの名前およびBlob の名前に設定。例えば、azureblob://mycontainer/myblob です。

Amazon Blob Storage でホストされているAvro ファイルへの接続および認証について詳しくは、Azure Blob Storage への接続 を参照してください。

Azure Data Lake Storage

Azure Data Lake Storage に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2、またはAzure Data Lake Storage Gen2 SSL に設定。
  • URI:the name of the file system and the name of the folder which contains your Avro files に設定。次に例を示します。
    • Gen 1:adl://myfilesystem/folder1
    • Gen 2:abfs://myfilesystem/folder1
    • Gen 2 SSL:abfss://myfilesystem/folder1

Azure Data Lake Storage でホストされているAvro ファイルへの接続および認証について詳しくは、Azure Data Lake Storage への接続 を参照してください。

Azure File Storage

接続するには次のプロパティを設定します。

  • ConnectionTypeAzure Files に設定。
  • URI:Azure ファイル共有の名前とリソースの名前に設定。例:azurefile://fileShare/remotePath
  • AzureStorageAccount(必須):Azure ファイルに紐づいているアカウントに設定。

Azure アクセスキーまたはAzure 共有アクセス署名のいずれかで認証できます。次のいずれか1つを設定してください。

  • AzureAccessKey:Azure ファイルに紐づいているアクセスキーに設定。
  • AzureSharedAccessSignature:Azure ファイルに紐づいている共有アクセス署名に設定。

Box

Box に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeBox に設定。
  • URI:the name of the file system and the name of the folder which contains your Avro files に設定。例えば、box://folder1です。

Box でホストされているAvro ファイルへの接続および認証について詳しくは、Box への接続 を参照してください。

Dropbox

Dropbox に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeDropbox に設定。
  • URI:the path to a folder containing Avro files に設定。例えば、dropbox://folder1 です。

Dropbox でホストされているAvro ファイルへの接続および認証について詳しくは、Dropbox への接続 を参照してください。

FTP

本製品 は、FTP サーバーへのプレーンテキスト接続およびSSL/TLS 接続の両方をサポートします。

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

  • ConnectionTypeFTP またはFTPS のいずれかに設定。
  • URI:the address of the server followed by the path to the folder to be used as the root folder に設定。例:ftp://localhost:990/folder1 またはftps://localhost:990/folder1
  • User:接続するFTP(S) サーバーのユーザー名に設定。
  • Password:接続するFTP(S) サーバーのパスワードに設定。

Google Cloud Storage

Google Cloud Storage に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeGoogle Cloud Storage に設定。
  • URI:the name of the file system and the name of the folder which contains your Avro files へのパスに設定。例えば、gs://bucket/remotePath です。

Google Cloud Storage でホストされているAvro ファイルへの接続および認証について詳しくは、Google Cloud Storage への接続 を参照してください。

Google Drive

Google Drive に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeGoogle Drive に設定。
  • URI:the name of the file system and the name of the folder which contains your Avro files へのパスに設定。例えば、gdrive://folder1 です。

Google Drive でホストされているAvro ファイルへの接続および認証について詳しくは、Google Drive への接続 を参照してください。

HDFS

HDFS に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeHDFS またはHDFS Secure に設定。
  • URI:the path to a folder containing Avro files に設定。次に例を示します。
    • HDFS:webhdfs://host:port/remotePath
    • HDFS Secure:webhdfss://host:port/remotePath
    • Cloudera Ozone(HttpFS ゲートウェイ経由): webhdfs://<Ozone server>:<port>/user/myuser
      • Ozone に保存されているAvro ファイルにアクセスするには、Kerberos 認証を使用する必要があります。
      • Ozone クラスタにOzone 718.2.x があることを確認してください。
      • Cloudera Manager version 7.10.1 が必要です。

HDFS データソースへの接続に使用できる認証方法は、匿名認証とKerberos 認証の2つがあります。

匿名認証

状況によっては、認証接続プロパティなしでHDFS に接続できます。 そのためには、AuthScheme プロパティをNone(デフォルト)に設定します。

Kerberos を使用した認証

認証資格情報が必要な場合、認証にKerberos を使用することができます。 Kerberos で認証する方法についての詳細は、Kerberos の使用 を参照してください。

HTTP Streams

HTTP streams に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeHTTP またはHTTPS に設定。
  • URI:HTTP(S) stream のURI に設定。次に例を示します。
    • HTTP: http://remoteStream
    • HTTPS: https://remoteStream

HTTP Streams でホストされているAvro ファイルへの接続および認証について詳しくは、HTTP Streams への接続 を参照してください。

IBM Cloud Object Storage

IBM Cloud Object Storage に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeIBM Object Storage Source に設定。
  • URI:バケットおよびフォルダに設定。例えば、ibmobjectstorage://bucket1/remotePath です。
  • Region:このプロパティをIBM インスタンスリージョンに設定。例:eu-gb.

IBM Cloud Object Storage でホストされているAvro ファイルへの接続および認証について詳しくは、IBM Object Storage への接続 を参照してください。

OneDrive

OneDrive に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeOneDrive に設定。
  • URI:the path to a folder containing Avro files に設定。例えば、onedrive://remotePath です。

OneDrive でホストされているAvro ファイルへの接続および認証について詳しくは、OneDrive への接続 を参照してください。

OneLake

OneLake に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeOneLake に設定。
  • URI:ワークスペース名、アイテム名、アイテムタイプの順に設定。オプションで、ルートフォルダとして使用するフォルダパスを含めます。例:onelake://Workspace/Test.LakeHouse/Files/CustomFolder

OneLake でホストされているAvro ファイルへの接続および認証について詳しくは、OneLake への接続 を参照してください。

Oracle Cloud Storage

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

  • ConnectionTypeConnectionTypeOracle Cloud Storage に設定。
  • URI:the bucket and folder:os://bucket/remotePath に設定。
  • AccessKey: Oracle Cloud のAccess Key に設定。
  • SecretKey:Oracle Cloud のSecret Key に設定。
  • OracleNamespace:Oracle cloud のnamespace に設定。
  • Region(オプション):S3ライクなWeb サービスのホスティングリージョンに設定。

SFTP

SFTP に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeSFTP に設定。
  • URI:これをサーバーのアドレスに設定し、ルートフォルダとして使用するフォルダのパスを続けて指定します。例えば、sftp://server:port/remotePath です。

SFTP でホストされているAvro ファイルへの接続および認証について詳しくは、SFTP への接続 を参照してください。

SharePoint Online

SharePoint Online に格納されているAvro リソースを識別するために以下を設定します。

  • ConnectionTypeSharePoint REST またはSharePoint SOAP に設定。
  • URI:a document library containing Avro files に設定。次に例を示します。
    • SharePoint Online REST: sprest://remotePath
    • SharePoint Online SOAP: sp://remotePath

SharePoint Online でホストされているAvro ファイルへの接続および認証について詳しくは、SharePoint Online への接続 を参照してください。

データの取得

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

$results = Select-Avro -Connection $conn -Table "SampleTable_1" -Columns @("Id, Column1") -Where "Column2='Bob'"
Invoke-Avro cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

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

Select-Avro -Connection $conn -Table SampleTable_1 -Where "Column2 = 'Bob'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\mySampleTable_1Data.csv -NoTypeInformation

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

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

 
PS C:\> $conn  = Connect-Avro -URI "C:\folder\table.avro;"
PS C:\> $row = Select-Avro -Connection $conn -Table "SampleTable_1" -Columns (Id, Column1) -Where "Column2 = 'Bob'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "SampleTable_1",
  "Columns":  [

  ],
  "Id":  "MyId",
  "Column1":  "MyColumn1"
} 

データの変更

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

Import-Csv -Path C:\MySampleTable_1Updates.csv | %{
  $record = Select-Avro -Connection $conn -Table SampleTable_1 -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-Avro -Connection $conn -Table SampleTable_1 -Columns @("Id","Column1") -Values @($_.Id, $_.Column1) -Where "Id  = `'$_.Id`'"
  }else{
    Add-Avro -Connection $conn -Table SampleTable_1 -Columns @("Id","Column1") -Values @($_.Id, $_.Column1)
  }
}

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