目次

Search

  1. はじめに
  2. 一括取り込みデータベース

一括取り込みデータベース

一括取り込みデータベース

Databricks Deltaターゲット

Databricks Deltaターゲット

データベース取り込みタスクでDatabricks Deltaターゲットを使用するには、最初にターゲットを準備し、使用に関する考慮事項を確認してください。
ターゲットの準備:
  1. DatabricksJDBC42 JDBCドライババージョン2.6.25をDatabricks JDBCドライバダウンロードWebサイトからダウンロードします。
    一括取り込みとCloudデータ統合の両方に同じドライバを使用する場合は、データ統合のコネクタパッケージにドライバの2.6.22バージョンが用意されていることに注意してください。この場合、Databricks Webサイトからダウンロードする代わりに、DatabricksJDBC42.jarファイルをデータ統合コネクタパッケージからコピーします。
    一括取り込みでは、バージョン2.6.5以降またはバージョン2.6.22を使用できます。バージョン2.6.5以降を使用している場合、Administratorインタフェースの
    [接続のテスト]
    機能は機能しません。
  2. 次のディレクトリにDatabricksJDBC42.jarファイルをコピーします。
    Secure_Agent_installation_directory
    /apps/Database_Ingestion/ext/
    古いSparkJDBC42.jarファイルがすでにSecure Agentインストールディレクトリにインストールされている場合は、そのファイルを削除します。
  3. Databricks Delta接続プロパティで、
    [JDBCドライバクラス名]
    プロパティを
    com.databricks.client.jdbc.Driver
    に設定します。
    古いCloudデータ統合ドライバをダウンロードした場合は、クラス名として
    com.simba.spark.jdbc.Driver
    を指定します。
  4. Windowsでは、Secure Agentが実行されているコンピュータにVisual Studio2013用のVisual C++再配布可能パッケージをインストールします。
使用に関する考慮事項:
  • 増分ロードジョブの場合、すべてのソースカラムに対して変更データキャプチャ(Change Data Capture: CDC)を有効にする必要があります。
  • 次のストレージタイプの上に作成されたDatabricks Deltaテーブルにアクセスできます。
    • Microsoft Azure Data Lake Storage(ADLS)Gen2
    • Amazon Web Services(AWS)S3
    Databricks Delta接続は、JDBC URLを使用してDatabricksクラスタに接続します。ターゲットを設定するときは、クラスタへの接続に使用するJDBC URLと資格情報を指定します。また、ターゲットがAmazon S3またはADLS Gen2のステージングロケーションに接続するために使用する接続情報を定義します。
  • Databricks Deltaターゲットテーブルにデータを書き込む前に、データベース取り込みジョブはデータをAmazon S3バケットまたはまたはADLSディレクトリにステージングします。データベース取り込みタスクを設定するときに、データのディレクトリを指定する必要があります。
    一括取り込みデータベース
    一括取り込みデータベースは、ディレクトリを決定する際にDatabricks Delta接続プロパティの
    [ADLSステージングファイルシステム名]
    [S3ステージングバケット]
    プロパティは使用しません。
  • 一括取り込みデータベース
    は、1回だけ実行されるジョブを使用して、Amazon S3またはAzure Data Lake Storage Gen2のステージングファイルから外部テーブルにデータをロードします。
    デフォルトでは、
    一括取り込みデータベース
    は、Databricks Delta接続プロパティで指定されたクラスタでジョブを実行します。別のクラスタでジョブを実行する場合は、データベース取り込みタスクウィザードの
    [ターゲット]
    ページで
    dbDeltaUseExistingCluster
    カスタムプロパティをfalseに設定します。
  • Databricks Delta接続プロパティで指定されたクラスタが稼働していない場合、データベース取り込みジョブはクラスタが開始するまで待機します。デフォルトでは、ジョブは10分間待機します。クラスタが10分以内に開始されない場合、接続がタイムアウトし、ジョブのデプロイが失敗します。
    接続のタイムアウト値を増やす場合は、
    dbClusterStartWaitingTime
    カスタムプロパティを、クラスタが稼働するまで取り込みジョブが待機する必要がある最大時間(秒単位)に設定します。データベース取り込みタスクウィザードの
    [ターゲット]
    ページでこのカスタムプロパティを設定できます。
  • デフォルトでは、一括取り込みデータベースは、Databricks DeltaのCOPY INTO機能を使用して、ステージングファイルからDatabricks Deltaターゲットテーブルにデータをロードします。データベース取り込みタスクウィザードの
    [ターゲット]
    ページで
    writerDatabricksUseSqlLoad
    カスタムプロパティをfalseに設定すると、すべてのロードタイプでこれを無効にできます。
  • AWSクラスタを使用する場合は、Databricks Delta接続プロパティの
    [S3サービスリージョナルエンドポイント]
    の値を指定する必要があります。以下に例を示します。
    s3.us-east-2.amazonaws.com
    LinuxでSecure Agentを使用してDatabricks Delta接続をテストするには、Databricks Delta接続プロパティの
    [SQLエンドポイントJDBC URL]
    フィールドでJDBC URLを指定する必要があります。接続をテストしたら、
    [SQLエンドポイントJDBC URL]
    の値を削除します。そうしないと、その接続を使用するデータベース取り込みタスクを定義するときに、一括取り込みでJDBC URL、必要な
    [Databricksホスト]
    [クラスタID]
    [組織ID]
    、および
    [Databricksトークン]
    の値を使用してターゲットに接続しようとしてログインに失敗するため、設計時エラーが発生します。
  • WindowsでSecure Agentを使用してDatabricks Delta接続をテストすることはできません。テストは失敗します。このような場合は、LinuxでSecure Agentを使用してテストを実行できます。ただし、データベース取り込みタスクを作成するとき、またはデータベース取り込みジョブを実行するときに、Windows上のSecure AgentでDatabricks Delta接続を使用できます。
  • 基になるParquetファイルを書き換える必要なく、Databricks Deltaターゲット テーブルに対してカラム名の変更操作を処理するには、Databricks Runtime 10.2以降のDatabricks Deltaカラムマッピング機能が必要です。タスクウィザードの
    [スケジュールおよびランタイムオプション]
    ページで
    [カラム名の変更]
    オプションを
    [レプリケート]
    に設定した場合、タスクのデプロイ後、ジョブを実行する前に、生成されたターゲットテーブルを変更して、次のDatabricksテーブルプロパティを設定する必要があります。
    ALTER TABLE <target_table> SET TBLPROPERTIES ( 'delta.columnMapping.mode' = 'name', 'delta.minReaderVersion' = '2', 'delta.minWriterVersion' = '5')
    これらのプロパティにより、必要なリーダーとライターのバージョンのDatabricks Deltaカラムマッピング機能が有効になります。これらのプロパティを設定しない場合、データベース取り込みジョブは失敗します。
  • Databricks Deltaターゲットを含むデータベース取り込みジョブは、Databricks Unity Catalogからターゲットテーブルを生成するためのスキーマ情報を取得できます。Unity Catalog内の情報へのアクセスを有効にするには、Databricks Delta接続プロパティの
    [カタログ名]
    フィールドにカタログ名を指定します。カタログ名は、データウェアハウスの
    [SQLウェアハウスJDBC URL]
    値に追加されます。
    カタログの使用はSQLウェアハウスの場合はオプションであり、ジョブクラスタには適用されません。
    Unity Catalogを使用する場合は、個人用ストレージの場所が自動的にプロビジョニングされます。個人用のステージング場所を使用するには、接続プロパティの
    [ステージング環境]
    フィールドで
    [個人用のステージング場所]
    を選択します。その後、取り込みジョブのParquetデータファイルをローカルの個人用ストレージの場所にステージングできます。データ保持期間は7日間です。デフォルトでは、ステージング場所はAWSまたはAzureのルートの場所
    stage://tmp/<user_name>
    です。<user_name>は、
    [データベーストークン]
    接続プロパティから取得されます。このユーザーには、個人用のステージング場所に対する読み取りおよび書き込みアクセス権が必要です。
  • 一括取り込みデータベース
    は、テーブルの特殊文字とソーステーブルのカラム名をサポートします。特殊文字は、Databricks Deltaターゲットテーブルまたはカラム名でアンダースコア(_)に置き換えられます。
    カスタムプロパティのキーと値のペア
    targetReplacementValue=toHex
    は、
    一括取り込みデータベース
    によって、生成されたターゲットスキーマで特殊文字がアンダースコアに置換されないようにし、特殊文字を16進形式に変換します。
    特殊文字を16進数値に変換するには、
    データベース統合
    タスクをデプロイする前に、次のアクションを実行します。
    1. metadata-managerレイヤーで使用するプロパティファイルを作成します。
      targetReplacementValue=toHex
      のキーと値のペアをプロパティファイルに追加します。
    2. 管理者
      [ランタイム環境]
      ページを開き、Secure Agentを編集します。
      [カスタム構成の詳細]
      領域でカスタムプロパティを作成します。
      • [データベース取り込み]
        サービスを選択します。
      • [DBMI_AGENT_ENV]
        タイプを選択します。
      • プロパティ名としてDBMI_TASK_OVERRIDE_PROPERTIESと入力します。
      • プロパティ値としてプロパティファイルの場所を入力します。
    3. タスクウィザードの
      [ターゲット]
      ページで、targetReplacementValueカスタムプロパティをtoHexに設定します。
      タスクを実行する前に、<jobname>をプロパティファイルのtargetReplacementValueキーに追加します。
      <jobname>.targetReplacementValue=toHex
      プロパティがすべてのジョブに影響する場合は、「alljobs」をtargetReplacementValueキーに追加します。
      alljobs.targetReplacementValue=toHex
  • Databricks Deltaターゲットのカラムにレプリケートするソースの小数値カラムまたは数値カラムを選択する場合は、各ソースの小数値カラムまたは数値カラムのスケールが精度の範囲内であることを確認してください。そうしないと、ジョブの実行時に、小数点スケールが無効だと報告するエラーが発行されます。この考慮事項は、Databricks Deltaターゲットにマッピングされているすべてのソースタイプに適用されます。