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 形式のファイルに対して圧縮アルゴリズムを設定することはサポートされていません。