メインコンテンツまでスキップ

Azure クラウドストレージへのデータアンロード

このトピックでは、CelerData から Microsoft Azure Blob Storage および Data Lake Storage にデータをアンロードする方法について説明します。

バージョン 3.2 以降、CelerData はテーブル関数 FILES() を使用して、リモートストレージに書き込み可能なテーブルを定義することをサポートしています。その後、INSERT INTO FILES を使用して CelerData からリモートストレージにデータをアンロードできます。

CelerData がサポートする他のデータエクスポート方法と比較して、INSERT INTO FILES を使用したデータのアンロードは、より統一された、使いやすく、豊富な機能を備えたインターフェースを提供します。SELECT ステートメントを使用してデータをロードしたのと同じ構文を使用して、リモートストレージにデータを直接アンロードできます。さらに、Parquet、ORC、および CSV (v3.3 から) フォーマットファイルへのデータアンロードをサポートしています。したがって、ほとんどの場合、INSERT INTO FILES は EXPORT や SELECT INTO OUTFILE よりも推奨されます。

NOTE

このトピックの 4 つの例をすべて確認して、クラウドストレージの異なる認証情報だけでなく、さまざまなファイル形式と圧縮アルゴリズムも理解することをお勧めします。

Azure Blob Storage へのデータアンロード

AWS ベースの CelerData クラスターから Azure Blob Storage にデータをアンロードしたい場合は、Shared Key 認証または Shared Access Signature (SAS) 認証を使用できます。

準備

コンテナ URL の取得

Azure Blob コンテナ URL の形式は次のとおりです:

{wasb | wasbs}://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<dir>/

Azure Blob Storage アカウント celerdata 内のコンテナ unloading の下のディレクトリ test/user_behavior/ にデータをアンロードしたいとします。Blob Storage にデータをアンロードする際には、wasb (HTTP 経由) プロトコルまたは wasbs (HTTPS 経由) プロトコルを使用できます。したがって、URL (FILES() 関数で定義された path) は次のいずれかになります:

  • wasb://``unloading@celerdata.blob.core.windows.net/test/user_behavior/
  • wasbs://``unloading@celerdata.blob.core.windows.net/test/user_behavior/

認証情報の取得

  • Shared Key 認証を使用したい場合は、Authenticate to Azure cloud storage - Shared Key に記載された手順に従って、ストレージアカウント celerdata のキー値を取得してください。
  • SAS 認証を使用したい場合は、Authenticate to Azure cloud storage - SAS Token に記載された手順に従って、ストレージアカウント celerdata の以下の権限設定で SAS トークンを取得してください:
    • 許可されたサービス: Blob
    • 許可されたリソースタイプ: Container, Object
    • 許可された権限: Read, Write, Delete, List, Add, Create, Immutable storage, Permanent delete

Shared Key を使用したデータアンロード

次の例では、wasbs プロトコルを使用して、テーブル全体のデータを Parquet 形式のファイルにアンロードします。

INSERT INTO FILES(
'path' = 'wasbs://unloading@celerdata.blob.core.windows.net/test1/user_behavior/',
'format' = 'parquet', -- Parquet 形式のファイルとしてデータをアンロードします。
'azure.blob.storage_account' = 'celerdata',
'azure.blob.shared_key' = '<storage_account_shared_key>'
)
SELECT * FROM user_behavior;

NOTE

Shared Key 認証を使用すると、ストレージアカウントのすべてのリソースに対するすべての操作を含むフルアクセスを持つ super-user アクセスが実質的に付与されます。

SAS トークンを使用したデータアンロード

次の例では、2020-01-01 から 2024-01-01 までのデータを WHERE 句と JOIN を含む複雑なクエリを使用してアンロードします。データは LZ4 圧縮アルゴリズムを使用して ORC 形式のファイルとして保存され、月ごとに (dt 列に基づいて) パーティション分割され、user_behavior/ の下の異なるディレクトリに分散されます。

INSERT INTO FILES(
'path' = 'wasbs://unloading@celerdata.blob.core.windows.net/test2/user_behavior/',
'format' = 'orc', -- ORC 形式のファイルとしてデータをアンロードします。
'compression' = 'lz4', -- LZ4 圧縮アルゴリズムを使用します。
'azure.blob.storage_account' = 'celerdata',
'azure.blob.container' = 'unloading',
'azure.blob.sas_token' = '<storage_account_SAS_token>',
'partition_by' = 'dt' -- 月ごとにデータを異なるディレクトリにパーティション分割します。
)
SELECT tb.*, tu.name FROM user_behavior tb
JOIN users tu on tb.user_id = tu.id
WHERE tb.dt >= '2020-01-01' and tb.dt < '2024-01-01';

NOTE

partition_by パラメータは、指定された列に基づいてデータをパーティション分割し、データを prefix/<column_name>=<value>/ という形式のサブディレクトリに保存します。例えば、/test2/user_behavior/dt=2020-01-01/ です。

Azure Data Lake Storage へのデータアンロード

Azure ベースの CelerData クラスターから Azure Data Lake Storage にデータをアンロードしたい場合は、Managed Identity 認証または Service Principal 認証を使用できます。

準備

コンテナ URL の取得

Azure Data Lake コンテナ URL の形式は次のとおりです:

{abfs | abfss}://<container_name>@<storage_account_name>.dfs.core.windows.net/<path>/<dir>/

Azure Data Lake Storage アカウント celerdataadls 内のコンテナ unloading の下のディレクトリ test/user_behavior/ にデータをアンロードしたいとします。Data Lake Storage にデータをアンロードする際には、abfs (HTTP 経由) プロトコルまたは abfss (HTTPS 経由) プロトコルを使用できます。したがって、URL (FILES() 関数で定義された path) は次のいずれかになります:

  • abfs://``unloading@celerdataadls.dfs.core.windows.net/test/user_behavior/
  • abfss://``unloading@celerdataadls.dfs.core.windows.net/test/user_behavior/

認証情報の取得

  • Managed Identity 認証を使用したい場合は、Authenticate to Azure cloud storage - Managed Identity に記載された手順に従って、ストレージアカウント celerdataadls に以下のロール割り当てを持つマネージドアイデンティティを作成し、対応する oauth2_tenant_id (ADLS ストレージアカウントのテナント ID) と oauth2_client_id (マネージドアイデンティティのクライアント ID) を取得してください:
    • Storage Account Contributor
    • Storage Blob Data Contributor
  • Service Principal 認証を使用したい場合は、Authenticate to Azure cloud storage - Service Principal に記載された手順に従って、ストレージアカウント celerdataadls に以下のロール割り当てを持つサービスプリンシパルを作成し、対応する oauth2_client_id (アプリケーション (クライアント) ID)、oauth2_client_secret (クライアントシークレットの値)、および oauth2_client_endpoint (OAuth 2.0 トークンエンドポイント (v1)) を取得してください:
    • Storage Account Contributor
    • Storage Blob Data Contributor

Managed Identity を使用したデータアンロード

次の例では、カラムセパレータとしてカンマ (,) を使用して、単一の CSV 形式のファイルにデータをアンロードします。

INSERT INTO FILES(
'path' = 'abfss://unloading@celerdataadls.dfs.core.windows.net/test3/user_behavior/',
'format' = 'csv', -- CSV 形式のファイルとしてデータをアンロードします。
'csv.column_separator' = ',', -- `,` をカラムセパレータとして使用します。
'single' = 'true', -- データを単一のファイルに出力します。
'azure.adls2.oauth2_use_managed_identity' = 'true',
'azure.adls2.oauth2_tenant_id' = '<tenant_id>',
'azure.adls2.oauth2_client_id' = '<client_id>'
)
SELECT * FROM user_behavior;

NOTE

  • Blob Storage アカウントを使用している場合は、Managed Identity 認証を使用するために Blob Storage を Data Lake にアップグレード する必要があります。
  • Managed Identity 認証を使用して Azure Data Lake Storage にデータをアンロードする場合、abfss プロトコルが必要です。

Service Principal を使用したデータアンロード

次の例では、最大サイズが 100000000 バイトの複数の Parquet 形式のファイルにデータをアンロードします。

INSERT INTO FILES(
'path' = 'abfss://unloading@celerdataadls.dfs.core.windows.net/test4/user_behavior/',
'format' = 'parquet',
'target_max_file_size' = '100000000', -- 最大ファイルサイズを 100000000 バイトに設定します。
'azure.adls2.oauth2_client_id' = '<service_principal_client_id>',
'azure.adls2.oauth2_client_secret' = '<service_principal_client_secret_value>',
'azure.adls2.oauth2_client_endpoint' = '<service_principal_client_endpoint>'
)
SELECT * FROM user_behavior;

制限事項

  • CSV 形式のファイルの出力は、バージョン 3.3 以降でのみサポートされています。
  • CSV 形式のファイルに対して圧縮アルゴリズムを設定することはサポートされていません。