すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Databricks データソース

最終更新日:Feb 11, 2026

本トピックでは、DataWorks における Databricks データソースからのデータ同期の特徴および制限事項について説明します。

注意事項

  • 制限事項

    • リソースグループ:Databricks Reader は サーバーレスリソースグループのみをサポートします。また、該当のリソースグループがバインドされた VPC に対して、パブリック NAT ゲートウェイおよび Elastic IP Address (EIP) を設定する必要があります。

    • 読み取りモード:データ同期タスクは JDBC モードでのみデータを読み取ることができます。

    • カタログの種類と機能制限:データソースの接続性テストまたはウィザードモードによるデータ同期タスクの構成を行う際、DataWorks は databricks-sdk を使用して Databricks REST API を呼び出します。この API は Unity Catalog のみをサポートしています。Unity Catalog 以外のカタログ(例: hive_metastore)を使用する場合、これらの機能は利用できません。以下のいずれかのソリューションをご検討ください:

      • 解決策 1(推奨): Unity Catalog への移行。Databricks の推奨に従い、データおよびメタデータを Unity Catalog へ移行します。これにより、DataWorks が提供するすべての機能を使用できるようになります。詳細については、「Unity Catalog への移行」をご参照ください。

      • ソリューション 2:スクリプトモードを直接使用。DataWorks でデータソースの構成を完了した後、[接続性のテスト] ステップをスキップし、スクリプトモードでデータ同期タスクを構成します。

  • 同時読み取りとデータ整合性

    Databricks Reader は、データパーティション分割のために splitPk パラメーターを使用し、複数の同時実行タスクを起動して同期スループットを向上させます。以下の点にご注意ください:

    • 同時実行タスクは同一データベーストランザクション内で実行されず、実行間には時間的な間隔があります。

    • データソースに対して継続的に書き込みが行われている場合、同時読み取りによって不完全または不整合なデータスナップショットが生成される可能性があります。

    技術的制約により、複数の同時読み取りにおいて完全に整合性のあるスナップショットを実現することは不可能です。ビジネス要件に応じて、以下のいずれかのソリューションをご選択ください:

    • ソリューション 1:シングルスレッド同期を使用し、splitPk パラメーターを指定せずにデータパーティション分割を行わないようにします。これにより厳密なデータ整合性が保証されますが、同期処理が遅くなります。

    • ソリューション 2:同期中にデータソースを静的状態に保つようにします。たとえば、テーブルロックを実施する、アプリケーションからの書き込みを一時停止する、またはスタンバイデータベースの同期を一時停止するなどの方法があります。この方法は高速ですが、オンラインサービスに影響を与える可能性があります。

  • エンコーディング

    Databricks Reader は Java Database Connectivity (JDBC) を使用してデータを抽出します。JDBC はデータベース間の文字コードを自動検出し変換するため、エンコーディングを手動で構成する必要はありません。

  • 増分同期

    Databricks Reader は SELECT ... WHERE ... 文を実行してデータを抽出します。増分同期を実装する鍵は、WHERE 句を正しく構築することです。

    1. 推奨アプローチ(タイムスタンプ列に基づく):

      1. ソースデータベーステーブルに modify_time などのタイムスタンプ列を設計します。

      2. アプリケーションによるデータの追加または更新(論理削除を含む)時に、このタイムスタンプ列が適切に更新されるようにします。

      3. データ同期タスクでは、このタイムスタンプ列を WHERE 句で使用し、前回の同期時点以降に変更されたデータを取得します。

    2. 非対応シナリオ:タイムスタンプやオートインクリメント ID のような新規/更新レコードを区別可能な列がテーブルに存在しない場合、Databricks Reader は増分同期を実行できません。この場合、フル同期のみが可能です。

サポートされるデータの型

オフライン読み取りの場合、Databricks Reader はほとんどの Databricks データの型をサポートしますが、一部の型はサポートされていません。開始前にデータの型を確認してください。

以下に、Databricks Reader がサポートする Databricks のデータの型を示します。

カテゴリ

Databricks のデータの型

整数

TINYINT、SMALLINT、INT、BIGINT

浮動小数点数

FLOAT、DOUBLE、DECIMAL

文字列

STRING

日付/時刻

DATE、TIMESTAMP、TIMESTAMP_NTZ

ブール値

BOOLEAN

複合型

ARRAY、MAP、STRUCT

その他の型

INTERVAL、BINARY、GEOGRAPHY(srid)、GEOMETRY(srid)

データソースの作成

データ同期タスクの開発を開始する前に、DataWorks で対応するデータソースを作成してください。詳細については、「データソース管理」をご参照ください。各パラメーターの詳細な説明については、構成ページのツールチップをご確認ください

データ同期タスクの開発

本セクションでは、データ同期タスクの構成方法について説明します。

単一テーブルのオフライン同期

よくある質問

  • Q:データ読み取り時に以下のエラーが発生しました:[Databricks][JDBCDriver](500313) 結果セットからデータ値を取得できませんでした:Column13:[Databricks][JDBCDriver](500312) データ行のフェッチに失敗しました:タイムスタンプの変換に失敗しました。

    A:Databricks の TIMESTAMP データの型の値範囲は、Java の Timestamp の値範囲を超えています。値が Java の範囲外である場合、JDBC ドライバーがエラーを返します。この問題を解決するには、column パラメーターを修正してください。例:"column": ["CAST(col_timestamp AS STRING)"]

付録:スクリプトのサンプルとパラメーター

オフラインタスクのスクリプト構成

スクリプトモードでオフラインタスクを構成する場合、タスクスクリプト内に必要な形式でパラメーターを指定する必要があります。詳細については、「スクリプトモードによるオフライン同期タスクの構成」をご参照ください。以降のセクションでは、スクリプトモードにおける Reader のパラメーターについて説明します。

Reader スクリプトのサンプル

{
  "type": "job",
  "version": "2.0",
  "steps": [
    {
      "stepType": "databricks",
      "parameter": {
        "datasource": "databricks",
        "schema": "schema1",
        "table": "table1",
        "readMode": "jdbc",
        "where": "id>1",
        "splitPk": "id",
        "column": [
          "c1",
          "c2"
        ]
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {
      "record": "0"
    },
    "speed": {
      "concurrent": 1
    }
  }
}

Reader スクリプトのパラメーター

パラメーター

説明

必須

デフォルト

datasource

DataWorks のデータソース名です。

はい

該当なし

column

同期対象のソーステーブルのカラム名の配列です。JSON 配列として指定します。

  • カラムの刈り込みをサポートしており、カラムのサブセットを同期できます。

  • カラムの並べ替えをサポートしており、テーブルスキーマとは異なる順序でカラムを同期できます。

  • 定数の構成をサポートしています。Databricks SQL の構文に従ってください。

例:"column":["id", "1", "'const name'", "null", "upper('abc_lower')", "2.3" , "true"]

  • id は通常のカラム名です。

  • 1 は整数定数です。

  • 'const name' は文字列定数であり、シングルクォーテーションで囲む必要があります。

  • null は null 値です。

  • upper('abc_lower') は関数式です。

  • 2.3 は浮動小数点数です。

  • true はブール値です。

同期対象のカラムを明示的に指定する必要があります。このパラメーターは空にできません。

はい

該当なし

splitPk

データパーティション分割に使用するカラムです。このパラメーターを指定すると、同時実行タスクが有効になり、同期スループットを向上させることができます。

  • splitPk パラメーターには、テーブルのプライマリキーの使用が推奨されます。プライマリキーは通常均等に分散されているため、パーティション分割されたデータにおけるデータホットスポットを防止できます。

  • 現在、splitPk パラメーターは整数型のデータパーティション分割のみをサポートしています。浮動小数点数、文字列、日付、その他のデータの型はサポートされていません。非対応の型を指定すると、Databricks Reader がエラーを返します。

いいえ

該当なし

where

データ選択のフィルター条件です。DataWorks は指定された columntablewhere パラメーターを使用して SELECT 文を構築し、データを抽出します。たとえば、増分同期を実行する場合は、gmt_create>${bizdate} のような条件を指定できます。これは増分同期を実行する効果的な方法です。このパラメーターを省略した場合、タスクはテーブル全体を同期します。

いいえ

該当なし

schema

同期対象のスキーマです。

はい

該当なし

table

同期対象のテーブルです。1 つのタスクで同期できるのは 1 つのテーブルのみです。

はい

該当なし

readMode

データ読み取りモードです。jdbc モードのみがサポートされています。

いいえ

jdbc