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