All Products
Search
Document Center

DataWorks:Sumber data Databricks

Last Updated:Feb 11, 2026

Topik ini menjelaskan fitur dan keterbatasan sinkronisasi data dari sumber data Databricks di DataWorks.

Catatan penggunaan

  • Keterbatasan

    • Kelompok sumber daya: Databricks Reader hanya mendukung kelompok sumber daya Serverless. Anda juga harus mengonfigurasi gerbang NAT publik dan Elastic IP Address (EIP) untuk VPC yang terikat pada kelompok sumber daya tersebut.

    • Mode baca: Tugas sinkronisasi data hanya dapat membaca data dalam mode JDBC.

    • Tipe katalog dan keterbatasan fitur: Saat menguji konektivitas sumber data atau mengonfigurasi tugas sinkronisasi data dalam mode wizard, DataWorks menggunakan databricks-sdk untuk memanggil Databricks REST API. API ini hanya mendukung Unity Catalog. Jika Anda menggunakan katalog selain Unity Catalog, seperti hive_metastore, fitur-fitur tersebut tidak tersedia. Anda dapat menggunakan salah satu solusi berikut:

      • Solusi 1 (Direkomendasikan): Migrasikan ke Unity Catalog. Seperti yang direkomendasikan oleh Databricks, migrasikan data dan metadata Anda ke Unity Catalog agar dapat memanfaatkan semua fitur yang disediakan oleh DataWorks. Untuk informasi lebih lanjut, lihat Migrate to Unity Catalog.

      • Solusi 2: Gunakan langsung mode skrip. Setelah mengonfigurasi sumber data di DataWorks, lewati langkah Test Connectivity dan konfigurasikan tugas sinkronisasi data dalam mode skrip.

  • Bacaan konkuren dan konsistensi data

    Databricks Reader menggunakan parameter splitPk untuk partisi data, yang memulai beberapa tugas konkuren guna meningkatkan throughput sinkronisasi. Perhatikan hal-hal berikut:

    • Tugas-tugas konkuren tersebut tidak berjalan dalam transaksi database yang sama dan memiliki interval waktu di antaranya.

    • Jika data terus-menerus ditulis ke sumber data, pembacaan konkuren dapat menghasilkan snapshot data yang tidak lengkap atau tidak konsisten.

    Karena keterbatasan teknis, mencapai snapshot yang sepenuhnya konsisten melalui beberapa pembacaan konkuren adalah hal yang mustahil. Anda dapat menggunakan salah satu solusi berikut, tergantung pada kebutuhan bisnis Anda:

    • Solusi 1: Gunakan sinkronisasi single-threaded dan jangan mengonfigurasi partisi data dengan parameter splitPk. Pendekatan ini menjamin konsistensi data yang ketat tetapi memperlambat proses sinkronisasi.

    • Solusi 2: Pastikan sumber data bersifat statis selama sinkronisasi. Misalnya, gunakan penguncian tabel, hentikan sementara penulisan aplikasi, atau jeda sinkronisasi database standby. Metode ini lebih cepat tetapi dapat memengaruhi layanan online.

  • Pengkodean

    Databricks Reader mengekstrak data menggunakan Java Database Connectivity (JDBC). JDBC secara otomatis mendeteksi dan mengonversi pengkodean karakter di berbagai database, sehingga Anda tidak perlu mengonfigurasi pengkodean secara manual.

  • Sinkronisasi data inkremental

    Databricks Reader mengekstrak data dengan mengeksekusi pernyataan SELECT ... WHERE .... Kunci untuk menerapkan sinkronisasi data inkremental adalah membangun klausa WHERE secara tepat.

    1. Pendekatan yang direkomendasikan (berdasarkan kolom timestamp):

      1. Rancang kolom timestamp, seperti modify_time, di tabel database sumber Anda.

      2. Saat aplikasi Anda menambah atau memperbarui data (termasuk penghapusan logis), pastikan kolom timestamp tersebut diperbarui sesuai.

      3. Dalam tugas sinkronisasi data, gunakan kolom timestamp ini dalam klausa WHERE untuk menarik data yang telah berubah sejak titik sinkronisasi terakhir.

    2. Skenario yang tidak didukung: Jika sebuah tabel tidak memiliki kolom yang dapat membedakan catatan baru dari catatan yang dimodifikasi, seperti timestamp atau ID auto-increment, Databricks Reader tidak dapat melakukan sinkronisasi data inkremental. Dalam kasus ini, hanya sinkronisasi data penuh yang memungkinkan.

Tipe data yang didukung

Untuk pembacaan offline, Databricks Reader mendukung sebagian besar tipe data Databricks. Namun, beberapa tipe tidak didukung. Verifikasi tipe data Anda sebelum memulai.

Tabel berikut mencantumkan tipe data Databricks yang didukung oleh Databricks Reader.

Kategori

Tipe data Databricks

Bilangan bulat

TINYINT, SMALLINT, INT, BIGINT

Bilangan titik mengambang

FLOAT, DOUBLE, DECIMAL

String

STRING

Tanggal/waktu

DATE, TIMESTAMP, TIMESTAMP_NTZ

Boolean

BOOLEAN

Tipe kompleks

ARRAY, MAP, STRUCT

Tipe lainnya

INTERVAL, BINARY, GEOGRAPHY(srid), GEOMETRY(srid)

Buat sumber data

Sebelum mengembangkan tugas sinkronisasi data, buat sumber data yang sesuai di DataWorks. Untuk detailnya, lihat Data source management. Untuk deskripsi parameter secara rinci, lihat tooltip pada halaman konfigurasi.

Kembangkan tugas sinkronisasi data

Bagian ini menjelaskan cara mengonfigurasi tugas sinkronisasi data.

Sinkronisasi offline tabel tunggal

FAQ

  • P: Saya mendapatkan kesalahan berikut saat membaca data: [Databricks][JDBCDriver](500313) Kesalahan saat mengambil nilai data dari set hasil: Column13: [Databricks][JDBCDriver](500312) Kesalahan saat mengambil baris data: Konversi timestamp gagal.

    A: Rentang nilai tipe data Databricks TIMESTAMP melebihi rentang nilai Java Timestamp. Jika suatu nilai berada di luar rentang Java, driver JDBC akan mengembalikan error. Untuk mengatasi masalah ini, ubah parameter column. Contoh: "column": ["CAST(col_timestamp AS STRING)"].

Lampiran: Contoh skrip dan parameter

Konfigurasi skrip untuk tugas offline

Jika Anda menggunakan mode skrip untuk mengonfigurasi tugas offline, Anda harus menentukan parameter dalam skrip tugas sesuai format yang ditentukan. Untuk informasi lebih lanjut, lihat Configure an offline synchronization task in script mode. Bagian berikut menjelaskan parameter Reader untuk mode skrip.

Contoh skrip 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
    }
  }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

Bawaan

datasource

Nama sumber data DataWorks Anda.

Ya

N/A

column

Array nama kolom dari tabel sumber yang akan disinkronkan. Parameter ini ditentukan sebagai array JSON.

  • Mendukung pemangkasan kolom, memungkinkan Anda menyinkronkan subset kolom.

  • Mendukung pengubahan urutan kolom, memungkinkan Anda menyinkronkan kolom dalam urutan yang berbeda dari skema tabel.

  • Mendukung konfigurasi konstanta. Anda harus mengikuti sintaksis SQL Databricks.

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

  • id adalah nama kolom biasa.

  • 1 adalah konstanta bilangan bulat.

  • 'const name' adalah konstanta string. Harus diapit tanda kutip tunggal.

  • null adalah nilai null.

  • upper('abc_lower') adalah ekspresi fungsi.

  • 2.3 adalah bilangan titik mengambang.

  • true adalah Nilai Boolean.

Anda harus secara eksplisit menentukan kolom yang akan disinkronkan. Parameter ini tidak boleh kosong.

Ya

N/A

splitPk

Kolom yang digunakan untuk partisi data. Menentukan parameter ini mengaktifkan tugas konkuren, yang dapat meningkatkan throughput sinkronisasi.

  • Disarankan menggunakan primary key tabel untuk parameter splitPk. Primary key biasanya terdistribusi merata, yang membantu mencegah hotspot data pada data yang dipartisi.

  • Saat ini, parameter splitPk hanya mendukung partisi data untuk tipe integer. Tipe data floating-point, string, tanggal, dan lainnya tidak didukung. Databricks Reader akan mengembalikan error jika Anda menentukan tipe yang tidak didukung.

Tidak

N/A

where

Kondisi filter untuk memilih data. DataWorks menggunakan parameter column, table, dan where yang ditentukan untuk membangun pernyataan SELECT guna mengekstrak data. Misalnya, untuk melakukan sinkronisasi data inkremental, Anda dapat menentukan kondisi seperti gmt_create>${bizdate}. Ini merupakan cara efektif untuk melakukan sinkronisasi inkremental. Jika Anda menghilangkan parameter ini, tugas akan menyinkronkan seluruh tabel.

Tidak

N/A

schema

Schema yang akan disinkronkan.

Ya

N/A

table

Tabel yang akan disinkronkan. Satu tugas hanya dapat menyinkronkan satu tabel.

Ya

N/A

readMode

Mode pembacaan data. Hanya mode jdbc yang didukung.

Tidak

jdbc