Skip to content
Last updated

Microsoft Azure Data Lake Storage Import Integration

Microsoft Azure Data Lake Storageは、ビッグデータ向けの業界をリードするストレージソリューションです。このインポート統合により、Azure Data Lake StorageからParquetファイルをTreasure Dataに取り込み、Treasure Dataで設定された他のデータソースと統合することができます。

この統合で何ができるか?

  • 既存のすべてのデータファイルをコピー: Azure Data LakeのすべてのParquetファイルをTreasure Dataにコピーして、システムから移行できます。
  • データを直接取り込む: ブリッジシステムを使用することなく、Azure Data LakeからTreasure Dataへ直接データをインポートします。

前提条件

  • Treasure Dataの基本知識
  • Microsoft Azure Data Lakeの基本知識
  • Shared Access Signaturesの作成とファイルのダウンロードに十分な権限を持つMicrosoft Azure Data Lakeアカウント

制限事項

  • Azure Data Lake Storage (v2) のみをサポート
  • Spark Partition (https://spark.apache.org/docs/2.4.0/sql-data-sources-parquet.html#partition-discovery) として1レベルのパーティションキーのみをサポート
  • snappy圧縮コーデックのみをサポート
  • ダウンロードとParquetファイルスキーマの読み取りに時間がかかるため、データプレビューは利用できません
  • HTTP Proxyメソッドのみをサポート
  • AzureのBlobStorageEventsまたはSoftDeleteはサポートされません
  • deltaファイル形式はサポートされません。(CSVやTVSなどの他の一般的なファイル形式については、Microsoft Azure Blob Storageを使用してください)

Parquetファイルサイズに関する推奨事項

  • Treasure Dataでは、Row Group Sizeを3.4GB未満に制限することを推奨しています。Row Group Sizeが3.4GBより大きい場合、インポートジョブで「Out of Memory」エラーが発生する可能性があります。

    これが発生した場合は、データをより小さなParquetファイルサイズに再パーティション化してから、インポートジョブを再試行する必要があります。

Microsoft Azure PortalからAccess KeyまたはShared Access Signatureを取得する

  1. Azure PortalでStorage Accountの管理画面に移動します
  2. Access keysまたはShared access signaturesを選択します
  3. TD認証設定で使用するためにキーをコピーします

TD Consoleを使用して接続を作成する

新しい接続を作成する

Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、統合にアクセスするための認証情報を提供します。

  1. TD Consoleを開きます。
  2. Integrations Hub > Catalogに移動します。
  3. Catalog画面の右端にある検索アイコンをクリックして、「Azure Lake」と入力します。
  4. Microsoft Azure Data Lakeコネクタにカーソルを合わせて、Create Authenticationを選択します。
  5. 以下のいずれかの認証方法を選択します:

Account Key認証方法 Shared Access Signatures認証方法 Proxy Setting (オプション) On Premises Setting (オプション)

  1. Authentication ModeドロップダウンメニューからShared Access Signatureを選択します。

  1. ストレージのAccount Nameを入力します。

  2. Azure PortalからコピーしたAccount Keyを入力します。

  3. Authentication ModeドロップダウンメニューからShared Access Signatureを選択します。

  1. ストレージのAccount Nameを入力します。

  2. Azure PortalからコピーしたAccount Keyを入力します。

  3. HTTP Proxyを経由して実行する場合は、Proxy Typeを選択します。

**

  1. Proxy HostProxy PortProxy UsernameProxy Passwordを入力します。

  2. Data Lakeがオンプレミスにある場合は、On Premises Settingを指定します。

  1. Premises Hostを入力します。 On Premises Settingでは、Shared Access Signatures認証方式のみがサポートされています。
  2. 接続の名前を入力します。
  3. 認証を他のユーザーと共有するかどうかを選択します。
  4. Continueを選択します。

データをTreasure Dataに転送する

認証接続を作成すると、自動的にAuthenticationsページに移動します。

  1. 作成した接続を検索します。
  2. New Sourceを選択します。
  3. Data Transfer フィールドにSourceの名前を入力します**。**
  4. Nextを選択します。Source Tableダイアログが開きます。

  1. 以下のパラメータを編集します:
ParametersDescription
ContainerData Lakeのコンテナ名
Path Prefix取り込むすべてのファイルを含むフォルダへのパス
Path Match Pattern (optional)この正規表現パターンに一致するファイルのみをインポートします
Sub folders are partitionsSpark Partitionフォルダ構造を使用していることを指定する場合に有効にします。サブフォルダは<column_name>=valueの形式で名前を付ける必要があります
Enable Schema Evolutionparquet用のスキーマエボリューションを有効にします
Incremental Loadingインクリメンタルモードを有効にします。
End time指定した時刻以降に変更されたファイルのみがインポートされます。
Schema Settings「Sub Folders Are Partitions」が有効な場合、そのパーティションカラムのカラム名とデータ型を指定する必要があります
Include Columnsインポートするカラムを制限します。リストで指定されたカラムのみがインポートされます。リストが空の場合、すべてのカラムがインポートされます。
  1. Nextを選択します。 Data Settingsページは必要に応じて変更できます。また、このページをスキップすることもできます。

  2. 必要に応じて、以下のパラメータを編集します:

ParameterDescription
------
Retry Limit最大リトライ回数
Initial retry interval in millis初回リトライ間隔(ミリ秒)
Max retry wait in millis最大リトライ間隔。初回リトライ後、待機間隔は最大値に達するまで2倍になります。
repartition_numberOut Of Memory例外を回避するために、入力ファイルを小さなファイルに分割します。大きなデータファイルに適用されます。デフォルト値は100です。
  1. Nextを選択します。

Data Preview

Data Previewはこの統合ではサポートされていません。プレビューにはサンプルデータのみが表示されます。

Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

  1. Next を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。

  2. Database を選択 > Select an existing または Create New Database を選択します。

  3. オプションで、database 名を入力します。

  4. Table を選択 > Select an existing または Create New Table を選択します。

  5. オプションで、table 名を入力します。

  6. データをインポートする方法を選択します。

    • Append (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。
    • Always Replace - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
    • Replace on New Data - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
  7. Timestamp-based Partition Key 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。

  8. データストレージの Timezone を選択します。

  9. Schedule の下で、このクエリを実行するタイミングと頻度を選択できます。

一度だけ実行

  1. Off を選択します。
  2. Scheduling Timezone を選択します。
  3. Create & Run Now を選択します。

定期的に繰り返す

  1. On を選択します。
  2. Schedule を選択します。UI では、@hourly@daily@monthly、またはカスタム cron の 4 つのオプションが提供されます。
  3. Delay Transfer を選択して、実行時間の遅延を追加することもできます。
  4. Scheduling Timezone を選択します。
  5. Create & Run Now を選択します。

転送が実行された後、Data Workbench > Databases で転送の結果を確認できます。

Workflowの設定(オプション)

Treasure Workflow内で、ワークフロー内でこのデータコネクタの使用を指定できます。

詳細はUsing Workflows to Export Data with the TD Toolbeltを参照してください。

Azure Data Lake Storage Input用のワークフロー例

+setup:
  echo>: start ${session_time}

+import-with-sql:
  td_load>: config.yml
  database: ${td.some_database}
  table: ${td.some_table2}

+teardown:
  echo>: finish ${session_time}

例(config.yml)

以下は、Azure Data Lakeからファイルを取得するための設定ファイルの例です:

input:    type: azure_datalake  authentication_mode: account_key  account_name: tdadl  account_key: fjZliu61iZV  sas_token: ?sv=sas_token  container_name: test  path_prefix:  /traffic_data/partition/collisionrecords2/  path_match_pattern: /traffic_data/partition/collisionrecords2/*  subfolder_partitions: true  proxy_type: none  proxy_host: host  proxy_port: 3128  proxy_username: tdpy  proxy_password: 321tre  repartition_number: 100  schema_evolution: false  incremental: true  last_updated_at: "2023-12-20T03:51:20.937Z"  include_columns: [          col0,          col3,          col4,      ]

Blobのソフト削除を有効にする

`"Soft delete for blobs"機能を有効にすると、コネクタはREST APIを使用するため動作しません。

この機能を使用するには、Azure Portalにログインし、概要ページからData Lake StorageのPropertiesを変更して、"Hierarchical namespace"を有効にします。

エラー例は次のようになります。

Caused by: org.apache.hadoop.fs.azurebfs.contracts.exceptions.AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.", 403, HEAD, https://kfcusprdanalyticsadl.dfs.core.windows.net/data-science-container/?upn=false&action=getAccessControl&timeout=90&sp=racwdlmep&st=2024-08-26T15:03:55Z&se=2024-10-15T23:03:55Z&spr=https&sv=2022-11-02&sr=d&sig=XXXXX&sdd=2s, rId: 596f51a1-601f-000d-6fe0-f7dd2e000000