全部产品
Search
文档中心

DataWorks:Sumber data Databricks

更新时间:Nov 12, 2025

Topik ini menjelaskan fitur dan dukungan untuk sinkronisasi data Databricks di DataWorks.

Catatan penggunaan

  • Batasan

    • Kelompok sumber daya: Databricks Reader hanya mendukung kelompok sumber daya Serverless. Anda juga harus mengonfigurasi Gateway NAT Internet dan elastic IP addresses (EIPs) untuk VPC yang terkait dengan kelompok sumber daya tersebut.

    • Mode baca: Sinkronisasi data hanya mendukung pembacaan data dalam mode JDBC.

  • Pembacaan konkuren dan konsistensi data

    Untuk meningkatkan efisiensi sinkronisasi, Databricks Reader membagi data berdasarkan konfigurasi splitPk dan menjalankan beberapa tugas secara konkuren. Perhatikan hal-hal berikut:

    • Beberapa tugas konkuren tidak termasuk dalam transaksi database yang sama dan dieksekusi pada waktu yang berbeda.

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

    Solusi: Karena keterbatasan teknis, tidak mungkin mencapai snapshot yang sepenuhnya konsisten di beberapa thread. Tersedia dua solusi. Pilih salah satu sesuai skenario bisnis Anda:

    • Solusi 1: Konfigurasikan sinkronisasi single-threaded tanpa pemisahan data (splitPk). Ini menjamin konsistensi data yang ketat tetapi menghasilkan sinkronisasi yang lebih lambat.

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

  • Pengkodean

    Databricks Reader menggunakan Java Database Connectivity (JDBC) untuk mengekstrak data. JDBC secara otomatis menangani deteksi dan konversi pengkodean untuk berbagai database. Oleh karena itu, Anda tidak perlu mengonfigurasi pengkodean secara manual.

  • Sinkronisasi data inkremental

    Databricks Reader mengekstrak data dengan mengeksekusi pernyataan SELECT ... WHERE .... Kunci sinkronisasi inkremental adalah menyusun klausa WHERE.

    1. Metode yang direkomendasikan (berdasarkan bidang timestamp):

      1. Tambahkan bidang timestamp, seperti modify_time, ke tabel database sumber Anda.

      2. Saat aplikasi menambahkan atau memperbarui data, termasuk melakukan penghapusan logis, pastikan bidang timestamp ini diperbarui.

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

    2. Skenario yang tidak didukung: Jika tabel sumber tidak memiliki bidang untuk membedakan data baru atau yang dimodifikasi, seperti timestamp atau ID auto-increment, Databricks Reader tidak dapat melakukan sinkronisasi inkremental. Dalam kasus ini, hanya dapat dilakukan sinkronisasi data penuh.

Tipe bidang yang didukung

Databricks Reader mendukung sebagian besar tipe data Databricks saat membaca data untuk tugas offline. Namun, beberapa tipe tidak didukung. Pastikan tipe data Anda kompatibel.

Tabel berikut mencantumkan tipe data Databricks yang dapat dikonversi oleh Databricks Reader.

Kategori

Tipe data Databricks

Tipe bilangan bulat

TINYINT, SMALLINT, INT, BIGINT

Tipe bilangan titik mengambang

FLOAT, DOUBLE, DECIMAL

Tipe string

STRING

Tipe tanggal dan waktu

DATE, TIMESTAMP, TIMESTAMP_NTZ

Tipe Boolean

BOOLEAN

Tipe kompleks

ARRAY, MAP, STRUCT

Tipe lainnya

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

Buat sumber data

Sebelum mengembangkan tugas sinkronisasi data, Anda harus membuat sumber data yang sesuai di DataWorks. Untuk informasi selengkapnya, lihat Manajemen Sumber Data. Untuk deskripsi detail parameter konfigurasi, merujuklah pada prompt di halaman konfigurasi.

Kembangkan tugas sinkronisasi data

Untuk informasi tentang cara mengakses halaman konfigurasi dan proses konfigurasi umum untuk tugas sinkronisasi data, lihat panduan berikut.

Panduan mengonfigurasi tugas sinkronisasi offline untuk satu tabel

FAQ

  • T: [Databricks][JDBCDriver](500313) Kesalahan saat mengambil nilai data dari set hasil: Column13: [Databricks][JDBCDriver](500312) Kesalahan saat mengambil baris data: Konversi Timestamp gagal.

    J: Rentang nilai tipe Databricks TIMESTAMP melebihi rentang nilai tipe Java Timestamp. Jika suatu nilai berada di luar jangkauan, driver JDBC akan melaporkan kesalahan. Untuk mengatasi masalah ini, modifikasi konfigurasi column. Contoh: "column": ["CAST(col_timestamp AS STRING)"].

Lampiran: Demo skrip dan deskripsi parameter

Konfigurasi skrip tugas offline

Jika Anda menggunakan editor kode untuk mengonfigurasi tugas offline, Anda harus mengonfigurasi parameter dalam skrip tugas mengikuti format standar. Untuk informasi selengkapnya, lihat Konfigurasi tugas sinkronisasi offline di editor kode. Bagian berikut menjelaskan parameter sumber data untuk editor kode.

Demo 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

Nilai default

datasource

Nama sumber data. Editor kode mendukung penambahan sumber data. Nilai parameter ini harus sama dengan nama sumber data yang ditambahkan.

Ya

Tidak ada

column

Set nama kolom yang akan disinkronkan dari tabel yang dikonfigurasi. Gunakan array JSON untuk menggambarkan informasi bidang.

  • Mendukung pemangkasan kolom. Anda dapat mengekspor subset kolom.

  • Mendukung pengubahan urutan kolom. Anda dapat mengekspor kolom dalam urutan yang berbeda dari skema tabel.

  • Mendukung konfigurasi konstanta. Anda harus mengikuti sintaks 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 penunjuk null.

  • upper('abc_lower') adalah ekspresi fungsi.

  • 2.3 adalah bilangan titik mengambang.

  • true adalah Nilai Boolean.

Anda harus secara eksplisit menentukan set kolom yang akan disinkronkan untuk parameter column. Parameter ini tidak boleh kosong.

Ya

Tidak ada

splitPk

Saat Databricks Reader mengekstrak data, jika Anda menentukan splitPk, sistem akan menggunakan bidang yang ditentukan untuk melakukan sharding terhadap data. Sistem sinkronisasi data memulai tugas konkuren untuk meningkatkan efisiensi sinkronisasi:

  • Gunakan kunci primer tabel untuk splitPk. Kunci primer biasanya terdistribusi merata, yang membantu mencegah hot spot data pada shard yang dihasilkan.

  • Saat ini, splitPk hanya mendukung sharding untuk data bilangan bulat. Tidak mendukung bilangan titik mengambang, string, tanggal, atau tipe data lainnya. Jika Anda menentukan tipe yang tidak didukung, Databricks Reader akan melaporkan kesalahan.

Tidak

Tidak ada

where

Kondisi filter. Databricks Reader menggabungkan column, table, dan kondisi where yang ditentukan untuk membentuk pernyataan SQL lengkap dan mengekstrak data berdasarkan pernyataan tersebut. Dalam skenario bisnis tipikal, Anda mungkin ingin menyinkronkan data untuk hari ini. Anda dapat mengatur kondisi where menjadi gmt_create>${bizdate}. Kondisi where memungkinkan sinkronisasi data inkremental yang efektif. Jika parameter ini dibiarkan kosong, semua data dalam tabel akan disinkronkan.

Tidak

Tidak ada

schema

Skema yang akan disinkronkan.

Ya

Tidak ada

table

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

Ya

Tidak ada

readMode

Mode pembacaan data. Saat ini, hanya mode JDBC yang didukung.

Tidak

jdbc