All Products
Search
Document Center

DataWorks:Sumber data Kafka

Last Updated:Jun 21, 2026

Sumber data Kafka menyediakan saluran dua arah untuk membaca dan menulis data ke Kafka. Topik ini menjelaskan kemampuan sinkronisasi data yang disediakan DataWorks untuk Kafka.

Versi yang didukung

DataWorks mendukung Alibaba Cloud Kafka dan versi Kafka yang dikelola sendiri mulai dari 0.10.2 hingga 3.6.x.

Catatan

Sinkronisasi data tidak didukung untuk versi Kafka sebelum 0.10.2 karena versi tersebut tidak mendukung pengambilan offset partisi dan struktur datanya mungkin tidak kompatibel dengan timestamp.

Pembacaan real-time

  • Jika Anda menggunakan Serverless resource group berlangganan, perkirakan spesifikasi yang dibutuhkan terlebih dahulu untuk mencegah kegagalan tugas akibat kekurangan resource.

    Perkirakan 1 CU per topik. Anda juga harus memperkirakan resource berdasarkan traffic:

    • Untuk data Kafka yang tidak dikompresi, perkirakan 1 CU untuk setiap traffic 10 MB/s.

    • Untuk data Kafka yang dikompresi, perkirakan 2 CU untuk setiap traffic 10 MB/s.

    • Untuk data Kafka yang dikompresi dan memerlukan parsing JSON, perkirakan 3 CU untuk setiap traffic 10 MB/s.

  • Saat menggunakan Serverless resource group berlangganan atau versi lama grup sumber daya eksklusif untuk Integrasi Data:

    • Jika workload Anda memiliki toleransi tinggi terhadap failover, penggunaan slot kluster tidak boleh melebihi 80%.

    • Jika workload Anda memiliki toleransi rendah terhadap failover, penggunaan slot kluster tidak boleh melebihi 70%.

Catatan

Penggunaan resource aktual bergantung pada faktor-faktor seperti konten dan format data. Setelah penilaian awal, sesuaikan alokasi resource berdasarkan penggunaan aktual saat runtime.

Batasan

Sumber data Kafka mendukung Serverless resource groups (direkomendasikan) dan versi lama grup sumber daya eksklusif untuk Integrasi Data.

Pembacaan offline dari satu tabel

Jika kedua parameter parameter.groupId dan parameter.kafkaConfig.group.id dikonfigurasi, parameter.groupId memiliki prioritas lebih tinggi daripada group.id dalam parameter kafkaConfig.

Penulisan real-time ke satu tabel

Deduplikasi data tidak didukung untuk operasi penulisan. Jika tugas dijalankan ulang setelah reset offset atau failover, data duplikat mungkin ditulis.

Penulisan real-time untuk seluruh database

  • Tugas sinkronisasi data real-time mendukung Serverless resource groups (direkomendasikan) dan versi lama grup sumber daya eksklusif untuk Integrasi Data.

  • Jika tabel sumber memiliki primary key, nilai primary key digunakan sebagai kunci untuk record Kafka. Hal ini memastikan bahwa perubahan pada primary key yang sama ditulis ke partisi Kafka yang sama secara berurutan.

  • Jika tabel sumber tidak memiliki primary key, Anda memiliki dua opsi. Jika Anda memilih opsi untuk menyinkronkan tabel tanpa primary key, kunci untuk record Kafka akan kosong. Untuk memastikan perubahan tabel ditulis ke Kafka secara berurutan, topik Kafka tujuan harus hanya memiliki satu partisi. Jika Anda memilih primary key kustom, kombinasi satu atau beberapa field non-primary key digunakan sebagai kunci untuk record Kafka.

  • Untuk memastikan perubahan dengan primary key yang sama ditulis ke partisi Kafka yang sama secara berurutan, bahkan jika kluster Kafka mengembalikan exception, tambahkan konfigurasi berikut dalam formulir parameter tambahan.

    {"max.in.flight.requests.per.connection":1,"buffer.memory": 100554432}

    Penting

    Konfigurasi ini secara signifikan menurunkan performa replikasi. Anda harus menyeimbangkan antara performa dengan kebutuhan pengurutan dan keandalan yang ketat.

  • Untuk informasi lebih lanjut tentang format keseluruhan pesan yang ditulis ke Kafka dalam sinkronisasi real-time, format pesan heartbeat, dan format pesan yang sesuai dengan perubahan data sumber, lihat Apendiks: Format pesan.

Tipe field yang didukung

Kafka menyediakan penyimpanan data tidak terstruktur. Record Kafka biasanya mencakup field-field berikut: key, value, offset, timestamp, headers, dan partition. Saat DataWorks membaca atau menulis data ke Kafka, data diproses sebagai berikut.

Baca data

Saat DataWorks membaca data dari Kafka, data dapat diurai dalam format JSON. Tabel berikut menjelaskan cara setiap modul data diproses.

Modul data record Kafka

Tipe data yang diproses

key

Bergantung pada item konfigurasi keyType dalam tugas sinkronisasi data. Untuk informasi lebih lanjut tentang parameter keyType, lihat deskripsi parameter lengkap di apendiks.

value

Bergantung pada item konfigurasi valueType dalam tugas sinkronisasi data. Untuk informasi lebih lanjut tentang parameter valueType, lihat deskripsi parameter lengkap di apendiks.

offset

Long

timestamp

Long

headers

String

partition

Long

Tulis data

DataWorks menulis data ke Kafka dalam format JSON atau teks. Kebijakan pemrosesan bervariasi berdasarkan jenis tugas sinkronisasi, seperti yang dijelaskan dalam tabel berikut.

Penting
  • Saat data ditulis dalam format teks, nama field tidak disertakan. Nilai field dipisahkan oleh pemisah.

  • Saat tugas sinkronisasi real-time menulis data ke Kafka, format JSON bawaan digunakan. Data mencakup informasi seperti pesan perubahan database, waktu bisnis, dan informasi Data Definition Language (DDL). Untuk detail format data, lihat Apendiks: Format pesan.

Jenis tugas sinkronisasi

Format value yang ditulis ke Kafka

Tipe field sumber

Metode pemrosesan untuk operasi penulisan

Sinkronisasi offline

Node sinkronisasi offline di DataStudio

json

String

String yang dikodekan UTF-8

Boolean

Dikonversi ke string "true" atau "false" yang dikodekan UTF-8

Waktu/Tanggal

String yang dikodekan UTF-8 dalam format yyyy-MM-dd HH:mm:ss

Numerik

String numerik yang dikodekan UTF-8

Aliran byte

Aliran byte diperlakukan sebagai string yang dikodekan UTF-8 dan dikonversi menjadi string.

text

String

String yang dikodekan UTF-8

Boolean

Dikonversi ke string "true" atau "false" yang dikodekan UTF-8

Waktu/Tanggal

String yang dikodekan UTF-8 dalam format yyyy-MM-dd HH:mm:ss

Numerik

String numerik yang dikodekan UTF-8

Aliran byte

Aliran byte diperlakukan sebagai string yang dikodekan UTF-8 dan dikonversi menjadi string.

Sinkronisasi real-time: ETL real-time ke Kafka

Node sinkronisasi real-time di DataStudio

json

String

String yang dikodekan UTF-8

Boolean

Tipe Boolean JSON

Waktu/Tanggal

  • Untuk nilai waktu dengan presisi kurang dari milidetik: Dikonversi ke bilangan bulat JSON 13 digit yang merepresentasikan timestamp dalam milidetik.

  • Untuk nilai waktu dengan presisi mikrodetik atau nanodetik: Dikonversi ke bilangan titik mengambang JSON yang mencakup bilangan bulat 13 digit untuk timestamp milidetik dan desimal 6 digit untuk timestamp nanodetik.

Numerik

Tipe numerik JSON

Aliran byte

Aliran byte dikodekan Base64 lalu dikonversi ke string yang dikodekan UTF-8.

text

String

String yang dikodekan UTF-8

Boolean

Dikonversi ke string "true" atau "false" yang dikodekan UTF-8

Waktu/Tanggal

String yang dikodekan UTF-8 dalam format yyyy-MM-dd HH:mm:ss

Numerik

String numerik yang dikodekan UTF-8

Aliran byte

Aliran byte dikodekan Base64 lalu dikonversi ke string yang dikodekan UTF-8.

Sinkronisasi real-time: Sinkronisasi real-time seluruh database ke Kafka

Hanya sinkronisasi data inkremental

Format JSON bawaan

String

String yang dikodekan UTF-8

Boolean

Tipe Boolean JSON

Waktu/Tanggal

Timestamp milidetik 13 digit

Numerik

Nilai numerik JSON

Aliran byte

Aliran byte dikodekan Base64 lalu dikonversi ke string yang dikodekan UTF-8.

Solusi sinkronisasi: Sinkronisasi real-time sekali klik ke Kafka

Sinkronisasi offline penuh + sinkronisasi real-time inkremental

Format JSON bawaan

String

String yang dikodekan UTF-8

Boolean

Tipe Boolean JSON

Waktu/Tanggal

Timestamp milidetik 13 digit

Numerik

Nilai numerik JSON

Aliran byte

Aliran byte dikodekan Base64 lalu dikonversi ke string yang dikodekan UTF-8.

Tambahkan sumber data

Sebelum mengembangkan tugas sinkronisasi di DataWorks, Anda harus menambahkan sumber data yang diperlukan ke DataWorks dengan mengikuti petunjuk di Manajemen sumber data. Anda dapat melihat deskripsi parameter di Konsol DataWorks untuk memahami arti parameter saat menambahkan sumber data.

Kembangkan tugas sinkronisasi data

Untuk informasi tentang titik masuk dan prosedur konfigurasi tugas sinkronisasi, lihat panduan konfigurasi berikut.

Konfigurasikan tugas sinkronisasi offline untuk satu tabel

Konfigurasikan tugas sinkronisasi real-time untuk satu tabel atau seluruh database

Untuk petunjuknya, lihat Konfigurasikan tugas sinkronisasi real-time untuk satu tabel dan Konfigurasikan tugas sinkronisasi real-time untuk seluruh database.

Konfigurasi autentikasi

SSL

Saat mengonfigurasi sumber data Kafka, jika Anda mengatur Special Authentication Method ke SSL atau SASL_SSL, Anda mengaktifkan autentikasi SSL untuk kluster Kafka. Anda harus mengunggah file sertifikat truststore klien dan memasukkan passphrase truststore.

  • Jika kluster Kafka adalah instans Alibaba Cloud Kafka, lihat Petunjuk peningkatan algoritma sertifikat SSL untuk mengunduh file sertifikat truststore yang benar. Passphrase truststore adalah KafkaOnsClient.

  • Jika kluster Kafka adalah instans EMR, lihat Gunakan enkripsi SSL untuk koneksi Kafka untuk mengunduh file sertifikat truststore yang benar dan mendapatkan passphrase truststore.

  • Untuk kluster yang dikelola sendiri, Anda harus mengunggah sertifikat truststore yang benar dan memasukkan passphrase truststore yang sesuai.

File sertifikat keystore, passphrase keystore, dan passphrase SSL hanya diperlukan ketika autentikasi SSL dua arah diaktifkan untuk kluster Kafka. Server kluster Kafka menggunakannya untuk mengotentikasi identitas klien. Autentikasi SSL dua arah diaktifkan ketika ssl.client.auth=required diatur dalam file server.properties kluster Kafka. Untuk informasi lebih lanjut, lihat Gunakan enkripsi SSL untuk koneksi Kafka.

GSSAPI

Jika Anda mengatur Sasl Mechanism ke GSSAPI saat mengonfigurasi sumber data Kafka, Anda harus mengunggah tiga file autentikasi: file konfigurasi JAAS, file konfigurasi Kerberos, dan file Keytab. Anda juga harus mengonfigurasi pengaturan DNS/HOST untuk grup sumber daya eksklusif. Bagian berikut menjelaskan file-file ini serta pengaturan DNS dan HOST yang diperlukan.

Catatan

Untuk Serverless resource group, Anda harus mengonfigurasi informasi alamat host menggunakan resolusi DNS internal. Untuk informasi lebih lanjut, lihat Resolusi DNS internal (PrivateZone).

  • File konfigurasi JAAS

    File JAAS harus dimulai dengan KafkaClient, diikuti oleh semua item konfigurasi yang diapit sepasang tanda kurung kurawal {}:

    • Baris pertama di dalam tanda kurung kurawal menentukan kelas komponen logon yang digunakan. Untuk mekanisme autentikasi SASL yang berbeda, kelas komponen logon bersifat tetap. Setiap item konfigurasi berikutnya ditulis dalam format key=value.

    • Semua item konfigurasi kecuali yang terakhir tidak boleh diakhiri dengan titik koma.

    • Item konfigurasi terakhir harus diakhiri dengan titik koma, dan titik koma lain harus mengikuti tanda kurung kurawal penutup }.

    Jika persyaratan format tidak dipenuhi, file konfigurasi JAAS tidak dapat diurai. Kode berikut menunjukkan format file konfigurasi JAAS yang umum. Ganti placeholder xxx dengan informasi aktual Anda.

    KafkaClient {
       com.sun.security.auth.module.Krb5LoginModule required
       useKeyTab=true
       keyTab="xxx"
       storeKey=true
       serviceName="kafka-server"
       principal="kafka-client@EXAMPLE.COM";
    };

    Item konfigurasi

    Deskripsi

    Modul logon

    Harus diatur ke com.sun.security.auth.module.Krb5LoginModule.

    useKeyTab

    Harus diatur ke true.

    keyTab

    Anda dapat menentukan path apa pun. Saat tugas sinkronisasi dijalankan, sistem secara otomatis mengunduh file keytab yang Anda unggah selama konfigurasi sumber data ke path lokal. Sistem kemudian menggunakan path lokal ini untuk item konfigurasi keytab.

    storeKey

    Menentukan apakah klien menyimpan kunci. Anda dapat mengatur ini ke true atau false. Ini tidak memengaruhi sinkronisasi data.

    serviceName

    Sesuai dengan item konfigurasi sasl.kerberos.service.name dalam file konfigurasi server.properties server Kafka. Konfigurasikan item ini sesuai kebutuhan.

    principal

    Principal Kerberos yang digunakan oleh klien Kafka. Konfigurasikan sesuai kebutuhan dan pastikan file keytab yang diunggah berisi kunci untuk principal ini.

  • File konfigurasi Kerberos

    File konfigurasi Kerberos harus berisi dua modul: [libdefaults] dan [realms].

    • Modul [libdefaults] menentukan parameter autentikasi Kerberos. Setiap item konfigurasi dalam modul ditulis dalam format key=value.

    • Modul [realms] menentukan alamat Key Distribution Center (KDC). Modul ini dapat berisi beberapa submodul realm. Setiap submodul realm dimulai dengan nama realm diikuti tanda sama dengan (=).

    Ini diikuti oleh serangkaian item konfigurasi yang diapit tanda kurung kurawal. Setiap item konfigurasi juga ditulis dalam format key=value. Kode berikut menunjukkan format file konfigurasi Kerberos yang umum. Ganti placeholder xxx dengan informasi aktual Anda.

    [libdefaults]
      default_realm = xxx
    
    [realms]
      xxx = {
        kdc = xxx
      }

    Item konfigurasi

    Deskripsi

    [libdefaults].default_realm

    Realm default yang digunakan saat mengakses node kluster Kafka. Biasanya sama dengan realm principal klien yang ditentukan dalam file konfigurasi JAAS.

    Parameter [libdefaults] lainnya

    Modul [libdefaults] dapat menentukan parameter autentikasi Kerberos lainnya, seperti ticket_lifetime. Konfigurasikan sesuai kebutuhan.

    [realms].realm name

    Harus sama dengan realm principal klien yang ditentukan dalam file konfigurasi JAAS dan [libdefaults].default_realm. Jika realm principal klien dalam file konfigurasi JAAS berbeda dari [libdefaults].default_realm, Anda perlu menyertakan dua submodul realms. Submodul ini harus sesuai dengan realm principal klien dalam file konfigurasi JAAS dan [libdefaults].default_realm, masing-masing.

    [realms].nama realm.kdc

    Menentukan alamat dan port KDC dalam format ip:port, misalnya kdc=10.0.0.1:88. Jika port dihilangkan, sistem menggunakan port default 88, misalnya kdc=10.0.0.1.

  • File Keytab

    File keytab harus berisi kunci untuk principal yang ditentukan dalam file konfigurasi JAAS dan harus dapat diverifikasi oleh KDC. Misalnya, jika ada file bernama client.keytab di direktori kerja saat ini, Anda dapat menjalankan perintah berikut untuk memverifikasi apakah file keytab berisi kunci untuk principal yang ditentukan.

    klist -ket ./client.keytab
    
    Keytab name: FILE:client.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       7 2018-07-30T10:19:16 te**@**.com (des-cbc-md5)
  • Konfigurasi DNS dan HOST untuk grup sumber daya eksklusif

    Saat kluster Kafka menggunakan autentikasi Kerberos, KDC mendaftarkan principal setiap node menggunakan hostname node tersebut. Saat klien terhubung ke node kluster Kafka, klien menggunakan pengaturan DNS dan HOST lokal untuk menurunkan principal node dan kemudian meminta kredensial akses untuk node tersebut dari KDC. Saat Anda menggunakan grup sumber daya eksklusif untuk mengakses kluster Kafka dengan autentikasi Kerberos yang diaktifkan, Anda harus mengonfigurasi pengaturan DNS dan HOST dengan benar untuk memastikan kredensial akses untuk node kluster dapat diperoleh dari KDC:

    • Pengaturan DNS

      Jika Anda menggunakan instans PrivateZone untuk resolusi nama domain node kluster Kafka di VPC tempat grup sumber daya eksklusif dilampirkan, Anda dapat menambahkan rute kustom untuk alamat IP 100.100.2.136 dan 100.100.2.138 ke lampiran VPC. Hal ini memastikan pengaturan resolusi nama domain PrivateZone untuk node kluster Kafka berlaku untuk grup sumber daya eksklusif. Di panel navigasi kiri Konsol DataWorks, klik daftar grup sumber daya. Di kolom Aksi grup sumber daya eksklusif Anda, klik pengaturan jaringan. Di tab Lampiran VPC, klik rute kustom di kolom Aksi. Di kotak dialog yang muncul, klik Tambah Rute, atur Jenis Tujuan ke IDC dan Metode Koneksi ke IP Langsung, masukkan alamat IP langsung, lalu klik Hasilkan Rute.

    • Pengaturan HOST

      Jika Anda tidak menggunakan instans PrivateZone untuk resolusi nama domain node kluster Kafka di VPC tempat grup sumber daya eksklusif dilampirkan, Anda harus menambahkan pemetaan alamat IP ke nama domain untuk setiap node kluster Kafka ke konfigurasi host. Di panel navigasi kiri Konsol DataWorks, klik daftar grup sumber daya. Temukan grup sumber daya Anda, klik pengaturan jaringan di kolom Aksi, dan pilih tab konfigurasi host. Klik Tambah untuk menambahkan domain host. Konfigurasi host memiliki prioritas lebih tinggi daripada pengaturan DNS.

PLAIN

Saat mengonfigurasi sumber data Kafka, jika Anda mengatur Sasl Mechanism ke PLAIN, file JAAS harus dimulai dengan KafkaClient, diikuti oleh semua item konfigurasi yang diapit sepasang tanda kurung kurawal {}.

  • Baris pertama di dalam tanda kurung kurawal menentukan kelas komponen logon yang digunakan. Untuk mekanisme autentikasi SASL yang berbeda, kelas komponen logon bersifat tetap. Setiap item konfigurasi berikutnya ditulis dalam format key=value.

  • Semua item konfigurasi kecuali yang terakhir tidak boleh diakhiri dengan titik koma.

  • Item konfigurasi terakhir harus diakhiri dengan titik koma. Titik koma juga harus ditambahkan setelah tanda kurung kurawal penutup "}".

Jika persyaratan format tidak dipenuhi, file konfigurasi JAAS tidak dapat diurai. Kode berikut menunjukkan format file konfigurasi JAAS yang umum. Ganti placeholder xxx dengan informasi aktual Anda.

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="xxx"
  password="xxx";
};

Item konfigurasi

Deskripsi

Modul logon

Harus diatur ke org.apache.kafka.common.security.plain.PlainLoginModul

username

Username. Konfigurasikan item ini sesuai kebutuhan.

password

Password. Konfigurasikan item ini sesuai kebutuhan.

FAQ

Apendiks: Demo skrip dan deskripsi parameter

Konfigurasikan tugas sinkronisasi batch menggunakan editor kode

Jika Anda ingin mengonfigurasi tugas sinkronisasi batch menggunakan editor kode, Anda harus mengonfigurasi parameter terkait dalam skrip berdasarkan persyaratan format skrip terpadu. Untuk informasi lebih lanjut, lihat Konfigurasi mode skrip. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Demo skrip Reader

Konfigurasi JSON berikut membaca data dari Kafka.

{
    "type": "job",
    "steps": [
        {
            "stepType": "kafka",
            "parameter": {
                "server": "host:9093",
                "column": [
                    "__key__",
                    "__value__",
                    "__partition__",
                    "__offset__",
                    "__timestamp__",
                    "'123'",
                    "event_id",
                    "tag.desc"
                ],
                "kafkaConfig": {
                    "group.id": "demo_test"
                },
                "topic": "topicName",
                "keyType": "ByteArray",
                "valueType": "ByteArray",
                "beginDateTime": "20190416000000",
                "endDateTime": "20190416000006",
                "skipExceedRecord": "true"
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "stream",
            "parameter": {
                "print": false,
                "fieldDelimiter": ","
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {
            "record": "0"
        },
        "speed": {
            "throttle": true,//Ketika throttle adalah false, parameter mbps tidak berlaku, yang berarti laju tidak dibatasi. Ketika throttle adalah true, laju dibatasi.
            "concurrent": 1,//Jumlah thread konkuren.
            "mbps":"12"//Laju transmisi maksimum. 1 mbps sama dengan 1 MB/s.
        }
    }
}

Parameter skrip Reader

Parameter

Deskripsi

Wajib

datasource

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

Ya

server

Alamat server broker Kafka dalam format ip:port.

Anda hanya dapat mengonfigurasi satu server, tetapi Anda harus memastikan DataWorks dapat terhubung ke alamat IP semua broker di kluster Kafka.

Ya

topic

Topik Kafka. Topik adalah agregasi feed pesan yang diproses Kafka.

Ya

column

Data Kafka yang akan dibaca. Kolom konstan, kolom data, dan kolom atribut didukung.

  • Kolom konstan: Kolom yang diapit tanda kutip tunggal, seperti ["'abc'", "'123'"].

  • Kolom data

    • Jika data Anda dalam format JSON, Anda dapat mengambil properti objek JSON, seperti ["event_id"].

    • Jika data Anda dalam format JSON, Anda dapat mengambil sub-properti bersarang objek JSON, seperti ["tag.desc"].

  • Kolom atribut

    • __key__: Kunci pesan.

    • __value__: Konten lengkap pesan.

    • __partition__: Partisi tempat pesan saat ini berada.

    • __headers__: Header pesan saat ini.

    • __offset__: Offset pesan saat ini.

    • __timestamp__: Timestamp pesan saat ini.

    Kode berikut memberikan contoh lengkap.

    "column": [
        "__key__",
        "__value__",
        "__partition__",
        "__offset__",
        "__timestamp__",
        "'123'",
        "event_id",
        "tag.desc"
        ]

Ya

keyType

Tipe kunci Kafka. Nilai yang valid: BYTEARRAY, DOUBLE, FLOAT, INTEGER, LONG, dan SHORT.

Tidak

valueType

Tipe nilai Kafka. Nilai yang valid: BYTEARRAY, DOUBLE, FLOAT, INTEGER, LONG, dan SHORT.

Tidak

beginDateTime

Waktu mulai untuk konsumsi data. Parameter ini menentukan batas kiri rentang waktu, yang inklusif. Ini adalah string waktu dalam format yyyymmddhhmmss. Anda dapat menggunakan parameter ini dengan scheduling parameters. Untuk informasi lebih lanjut, lihat Format yang didukung untuk parameter penjadwalan.

Catatan

Fitur ini didukung di Kafka 0.10.2 dan versi selanjutnya.

Anda harus menentukan salah satu parameter ini atau beginOffset.

Catatan

beginDateTime dan endDateTime digunakan bersama.

endDateTime

Waktu akhir untuk konsumsi data. Parameter ini menentukan batas kanan rentang waktu, yang eksklusif. Ini adalah string waktu dalam format yyyymmddhhmmss. Anda dapat menggunakan parameter ini dengan scheduling parameters. Untuk informasi lebih lanjut, lihat Format yang didukung untuk parameter penjadwalan.

Catatan

Fitur ini didukung di Kafka 0.10.2 dan versi selanjutnya.

Anda harus menentukan salah satu parameter ini atau endOffset.

Catatan

endDateTime dan beginDateTime digunakan bersama.

beginOffset

Offset awal untuk konsumsi data. Anda dapat mengonfigurasinya dalam bentuk berikut:

  • Bilangan, seperti 15553274, yang menunjukkan offset awal untuk konsumsi.

  • seekToBeginning: menunjukkan bahwa data dikonsumsi dari offset paling awal.

  • seekToLast: Membaca data mulai dari offset yang disimpan untuk ID grup yang ditentukan oleh group.id dalam parameter kafkaConfig. Perhatikan bahwa offset grup secara otomatis dikomit ke server Kafka oleh klien pada interval reguler. Oleh karena itu, jika tugas gagal dan dijalankan ulang, duplikasi atau kehilangan data mungkin terjadi. Jika parameter skipExceedRecord diatur ke true, tugas mungkin membuang beberapa catatan terakhir yang telah dibaca. Offset grup untuk data yang dibuang ini telah dikomit ke server, sehingga data ini tidak dapat dibaca dalam eksekusi tugas berikutnya.

  • seekToEnd: menunjukkan bahwa data dikonsumsi dari offset terbaru. Ini akan membaca data kosong.

Anda harus menentukan salah satu parameter ini atau beginDateTime.

endOffset

Offset akhir untuk konsumsi data. Ini digunakan untuk mengontrol kapan tugas konsumsi data berhenti.

Anda harus menentukan salah satu parameter ini atau endDateTime.

skipExceedRecord

Kafka menggunakan public ConsumerRecords<K, V> poll(final Duration timeout) untuk mengonsumsi data. Satu panggilan poll dapat mengambil data yang melebihi endOffset atau endDateTime yang ditentukan. Parameter ini menentukan apakah data berlebih ini ditulis ke tujuan. Karena tugas menggunakan komit offset otomatis, kami merekomendasikan hal berikut:

  • Untuk versi Kafka sebelum 0.10.2: Atur skipExceedRecord ke false.

  • Untuk Kafka 0.10.2 dan versi selanjutnya: Atur skipExceedRecord ke true.

Tidak. Nilai default adalah false.

partition

Topik Kafka memiliki beberapa partisi (partition). Secara default, tugas sinkronisasi data membaca data dari rentang offset yang mencakup semua partisi dalam topik. Anda juga dapat menentukan partition untuk hanya membaca data dari rentang offset satu partisi.

Tidak. Tidak ada nilai default.

kafkaConfig

Saat membuat klien KafkaConsumer untuk konsumsi data, Anda dapat menentukan parameter tambahan seperti bootstrap.servers, auto.commit.interval.ms, dan session.timeout.ms. Anda dapat menggunakan kafkaConfig untuk mengontrol perilaku konsumsi KafkaConsumer.

Tidak

encoding

Saat keyType atau valueType diatur ke STRING, encoding yang ditentukan oleh parameter ini digunakan untuk mengurai string.

Tidak. Nilai default adalah UTF-8.

waitTIme

Waktu maksimum, dalam detik, yang ditunggu objek konsumen untuk menarik data dari Kafka dalam satu percobaan.

Tidak. Nilai default adalah 60.

stopWhenPollEmpty

Nilai yang valid adalah true dan false. Jika parameter ini diatur ke true dan konsumen menarik data kosong dari Kafka (biasanya karena semua data di topik telah dibaca, atau karena masalah ketersediaan jaringan atau kluster Kafka), tugas berhenti segera. Jika tidak, tugas mencoba lagi hingga data berhasil dibaca.

Tidak. Nilai default adalah true.

stopWhenReachEndOffset

Parameter ini hanya berlaku saat stopWhenPollEmpty adalah true. Nilai yang valid adalah true dan false.

  • Jika parameter ini diatur ke true dan konsumen tidak menerima data dari permintaan poll, sistem memeriksa apakah offset terbaru di partisi topik telah tercapai. Jika offset terbaru telah tercapai untuk semua partisi, tugas berhenti segera. Jika tidak, tugas terus mencoba menarik data dari topik.

  • Jika parameter ini diatur ke false dan konsumen tidak menerima data dari permintaan poll, sistem tidak melakukan pemeriksaan dan tugas berhenti segera.

Tidak. Nilai default adalah false.

Catatan

Pengaturan ini menyediakan kompatibilitas mundur. Versi Kafka sebelum 0.10.2 tidak mendukung pemeriksaan offset terbaru semua partisi.

Tabel berikut menjelaskan parameter kafkaConfig.

Parameter

Deskripsi

fetch.min.bytes

Jumlah minimum data, dalam byte, yang diambil konsumen dari broker dalam satu permintaan. Broker menunggu hingga jumlah data ini tersedia sebelum merespons konsumen.

fetch.max.wait.ms

Waktu maksimum, dalam milidetik, yang ditunggu broker agar data tersedia sebelum merespons permintaan fetch. Nilai default adalah 500. Broker merespons ketika salah satu kondisi fetch.min.bytes atau fetch.max.wait.ms terpenuhi.

max.partition.fetch.bytes

Menentukan jumlah maksimum byte yang dapat dikembalikan broker ke konsumen dari setiap partition. Nilai default adalah 1 MB.

session.timeout.ms

Menentukan waktu yang dapat dilewati konsumen terputus dari server sebelum berhenti menerima layanan. Nilai default adalah 30 detik.

auto.offset.reset

Tindakan yang diambil konsumen saat membaca tanpa offset atau offset tidak valid (karena konsumen tidak aktif dalam waktu lama dan catatan dengan offset tersebut telah kedaluwarsa dan dihapus). Nilai default adalah none, yang berarti offset tidak diatur ulang secara otomatis. Anda dapat mengubahnya ke earliest, yang berarti konsumen membaca catatan partition dari offset paling awal.

max.poll.records

Jumlah pesan yang dapat dikembalikan oleh satu panggilan ke metode poll.

key.deserializer

Metode deserialisasi untuk kunci pesan, seperti org.apache.kafka.common.serialization.StringDeserializer.

value.deserializer

Metode deserialisasi untuk nilai data, seperti org.apache.kafka.common.serialization.StringDeserializer.

ssl.truststore.location

Path sertifikat root SSL.

ssl.truststore.password

Password untuk penyimpanan sertifikat root. Jika Anda menggunakan Alibaba Cloud Kafka, atur ini ke KafkaOnsClient.

security.protocol

Protokol akses. Saat ini, hanya protokol SASL_SSL yang didukung.

sasl.mechanism

Metode autentikasi SASL. Jika Anda menggunakan Alibaba Cloud Kafka, gunakan PLAIN.

java.security.auth.login.config

Path file autentikasi SASL.

Demo skrip Writer

Kode berikut menunjukkan konfigurasi JSON untuk menulis data ke Kafka.

{
  "type":"job",
  "version":"2.0",//Nomor versi.
  "steps":[
    {
      "stepType":"stream",
      "parameter":{},
      "name":"Reader",
      "category":"reader"
    },
    {
      "stepType":"Kafka",//Nama plug-in.
      "parameter":{
          "server": "ip:9092", //Alamat server Kafka.
          "keyIndex": 0, //Kolom yang akan digunakan sebagai kunci. Harus mengikuti konvensi penamaan camel case, dengan k huruf kecil.
          "valueIndex": 1, //Kolom yang akan digunakan sebagai nilai. Saat ini, Anda hanya dapat memilih satu kolom dari data sumber atau meninggalkan parameter ini kosong. Jika kosong, semua data sumber digunakan.
          //Misalnya, untuk menggunakan kolom ke-2, ke-3, dan ke-4 dari tabel ODPS sebagai kafkaValue, buat tabel ODPS baru, bersihkan dan integrasikan data dari tabel ODPS asli ke tabel baru, lalu gunakan tabel baru untuk sinkronisasi.
          "keyType": "Integer", //Tipe kunci Kafka.
          "valueType": "Short", //Tipe nilai Kafka.
          "topic": "t08", //Topik Kafka.
          "batchSize": 1024 //Jumlah data yang ditulis ke Kafka sekaligus, dalam byte.
        },
      "name":"Writer",
      "category":"writer"
    }
  ],
  "setting":{
      "errorLimit":{
      "record":"0"//Jumlah catatan error.
    },
    "speed":{
        "throttle":true,//Ketika throttle adalah false, parameter mbps tidak berlaku, yang berarti laju tidak dibatasi. Ketika throttle adalah true, laju dibatasi.
        "concurrent":1, //Jumlah pekerjaan konkuren.
        "mbps":"12"//Laju transmisi maksimum. 1 mbps sama dengan 1 MB/s.
    }
   },
    "order":{
    "hops":[
        {
            "from":"Reader",
            "to":"Writer"
        }
      ]
    }
}

Parameter skrip Writer

Parameter

Deskripsi

Wajib

datasource

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

Ya

server

Alamat server Kafka dalam format ip:port.

Ya

topic

Topik Kafka. Ini adalah kategori untuk feed pesan berbeda yang diproses Kafka.

Setiap pesan yang dipublikasikan ke kluster Kafka memiliki kategori, yang disebut topik. Topik adalah kumpulan sekelompok pesan.

Ya

valueIndex

Kolom di writer Kafka yang digunakan sebagai nilai. Jika tidak ditentukan, semua kolom digabungkan untuk membentuk nilai secara default. Pemisah ditentukan oleh fieldDelimiter.

Tidak

writeMode

Saat valueIndex tidak dikonfigurasi, parameter ini menentukan format penggabungan semua kolom catatan sumber untuk membentuk nilai record Kafka. Nilai yang valid adalah text dan JSON. Nilai default adalah text.

  • Jika diatur ke text, semua kolom digabungkan menggunakan pemisah yang ditentukan oleh fieldDelimiter.

  • Jika diatur ke JSON, semua kolom digabungkan menjadi string JSON berdasarkan nama field yang ditentukan oleh parameter column.

Misalnya, jika catatan sumber memiliki tiga kolom dengan nilai a, b, dan c, dan writeMode diatur ke text dan fieldDelimiter diatur ke #, nilai record Kafka yang ditulis adalah string a#b#c. Jika writeMode diatur ke JSON dan column diatur ke [{"name":"col1"},{"name":"col2"},{"name":"col3"}], nilai record Kafka yang ditulis adalah string {"col1":"a","col2":"b","col3":"c"}.

Jika valueIndex dikonfigurasi, parameter ini tidak berlaku.

Tidak

column

Field di tabel tujuan tempat data akan ditulis, dipisahkan koma. Contoh: "column": ["id", "name", "age"].

Saat valueIndex tidak dikonfigurasi dan writeMode diatur ke JSON, parameter ini menentukan nama bidang dalam struktur JSON untuk nilai kolom dari catatan sumber. Contohnya: "column": [{"name":"id","type":"JSON_NUMBER"}, {"name":"name","type":"JSON_STRING"}, {"name":"age","type":"JSON_NUMBER"}].

  • Jika jumlah kolom dalam catatan sumber lebih besar daripada jumlah nama field yang dikonfigurasi dalam column, data dipotong saat penulisan. Contoh:

    Jika catatan sumber memiliki tiga kolom dengan nilai a, b, dan c, dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_STRING"},{"name":"col2","type":"JSON_STRING"}], nilai record Kafka yang ditulis adalah string {"col1":"a","col2":"b"}.

  • Jika jumlah kolom dalam catatan sumber lebih sedikit daripada jumlah field yang ditentukan dalam column, field tambahan diisi dengan null atau string yang ditentukan oleh nullValueFormat. Contoh:

    Jika catatan sumber memiliki dua kolom dengan nilai a dan b, dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_STRING"},{"name":"col2","type":"JSON_STRING"},{"name":"col3","type":"JSON_STRING"}], nilai record Kafka yang ditulis adalah string {"col1":"a","col2":"b","col3":null}. Jika valueIndex dikonfigurasi, atau jika writeMode diatur ke text, parameter ini tidak berlaku.

  • Jika tipe field JSON tidak dikonfigurasi, tipe field default adalah JSON_STRING.

  • Untuk nilai yang valid dari tipe field JSON, lihat Apendiks: Tipe field JSON.

Jika valueIndex dikonfigurasi, atau jika writeMode diatur ke text, parameter ini tidak berlaku.

Wajib saat valueIndex tidak dikonfigurasi dan writeMode diatur ke JSON.

partition

Menentukan nomor partisi di topik Kafka tempat data ditulis. Ini harus berupa bilangan bulat yang lebih besar dari atau sama dengan 0.

Tidak

keyIndex

Kolom di writer Kafka yang digunakan sebagai kunci.

Nilai parameter keyIndex harus berupa bilangan bulat yang lebih besar dari atau sama dengan 0. Jika tidak, tugas akan gagal.

Tidak

keyIndexes

Array nomor ordinal kolom dalam catatan sumber yang digunakan sebagai kunci untuk record Kafka.

Nomor ordinal kolom dimulai dari 0. Misalnya, [0,1,2] akan menggabungkan nilai semua nomor kolom yang dikonfigurasi dengan koma untuk membentuk kunci record Kafka. Jika tidak ditentukan, kunci record Kafka adalah null, dan data ditulis ke partisi topik secara round-robin. Anda hanya dapat menentukan salah satu parameter ini atau keyIndex.

Tidak

fieldDelimiter

Saat writeMode diatur ke text dan valueIndex tidak dikonfigurasi, semua kolom catatan sumber digabungkan menggunakan pemisah kolom yang ditentukan oleh parameter ini untuk membentuk nilai record Kafka. Anda dapat mengonfigurasi satu karakter atau beberapa karakter sebagai pemisah. Anda dapat mengonfigurasi karakter Unicode dalam format \u0001. Karakter escape seperti \t dan \n didukung. Nilai default adalah \t.

Jika writeMode tidak diatur ke text atau jika valueIndex dikonfigurasi, parameter ini tidak berlaku.

Tidak

keyType

Tipe kunci Kafka. Nilai yang valid: BYTEARRAY, DOUBLE, FLOAT, INTEGER, LONG, dan SHORT.

Ya

valueType

Tipe nilai Kafka. Nilai yang valid: BYTEARRAY, DOUBLE, FLOAT, INTEGER, LONG, dan SHORT.

Ya

nullKeyFormat

Jika nilai kolom sumber yang ditentukan oleh keyIndex atau keyIndexes adalah null, nilai tersebut diganti dengan string yang ditentukan oleh parameter ini. Jika tidak dikonfigurasi, tidak ada penggantian yang dilakukan.

Tidak

nullValueFormat

Jika nilai kolom sumber adalah null, nilai tersebut diganti dengan string yang ditentukan oleh parameter ini saat merakit nilai record Kafka. Jika Anda tidak menentukan parameter ini, tidak ada penggantian yang dilakukan.

Tidak

acks

Konfigurasi acks saat menginisialisasi produsen Kafka. Ini menentukan metode acknowledgment untuk penulisan yang berhasil. Secara default, parameter acks diatur ke all. Nilai yang valid untuk acks adalah:

  • 0: Tidak ada acknowledgment untuk penulisan yang berhasil.

  • 1: Acknowledgment untuk penulisan yang berhasil ke replika primer.

  • all: Acknowledgment untuk penulisan yang berhasil ke semua replika.

Tidak

Apendiks: Definisi format pesan untuk penulisan ke Kafka

Setelah Anda mengonfigurasi dan menjalankan tugas sinkronisasi real-time, data yang dibaca dari database sumber ditulis ke topik Kafka dalam format JSON. Pertama, semua data yang ada di tabel sumber yang ditentukan ditulis ke topik Kafka yang sesuai. Kemudian, tugas memulai sinkronisasi real-time untuk terus menulis data inkremental ke topik tersebut. Informasi perubahan DDL inkremental dari tabel sumber juga ditulis ke topik Kafka dalam format JSON. Anda dapat memperoleh status dan informasi perubahan pesan yang ditulis ke Kafka. Untuk informasi lebih lanjut, lihat Apendiks: Format pesan.

Catatan

Dalam data JSON dari tugas sinkronisasi offline, field payload.sequenceId, payload.timestamp.eventTime, dan payload.timestamp.checkpointTime diatur ke -1.

Apendiks: Tipe field JSON

Saat writeMode diatur ke JSON, Anda dapat menentukan tipe field JSON menggunakan field type dalam parameter column. Selama operasi penulisan, sistem mencoba mengonversi nilai kolom dari catatan sumber ke tipe yang ditentukan. Konversi tipe yang gagal menghasilkan data kotor.

Nilai yang valid

Deskripsi

JSON_STRING

Mengonversi nilai kolom catatan sumber ke string dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah bilangan bulat 123 dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_STRING"}], nilai yang ditulis ke record Kafka adalah string {"col1":"123"}.

JSON_NUMBER

Mengonversi nilai kolom catatan sumber ke angka dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah string 1.23 dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_NUMBER"}], nilai yang ditulis ke record Kafka adalah string {"col1":1.23}.

JSON_BOOL

Mengonversi nilai kolom catatan sumber ke nilai Boolean dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah string true dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_BOOL"}, nilai record Kafka yang ditulis adalah string {"col1":true}

JSON_ARRAY

Mengonversi nilai kolom catatan sumber ke array JSON dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah string [1,2,3] dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_ARRAY"}], nilai yang ditulis ke record Kafka adalah string {"col1":[1,2,3]}.

JSON_MAP

Mengonversi nilai kolom catatan sumber ke objek JSON dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah string {"k1":"v1"} dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_MAP"}], nilai yang ditulis ke record Kafka adalah string {"col1":{"k1":"v1"}}.

JSON_BASE64

Mengonversi array byte dari kolom sumber ke string yang dikodekan BASE64 dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah array 2 byte yang direpresentasikan dalam heksadesimal sebagai 0x01 0x02, dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_BASE64"}], nilai yang ditulis ke record Kafka adalah string {"col1":"AQI="}.

JSON_HEX

Mengonversi array byte dari kolom sumber ke string heksadesimal dan menulisnya ke field JSON. Misalnya, jika nilai kolom catatan sumber adalah array 2 byte yang direpresentasikan dalam heksadesimal sebagai 0x01 0x02, dan column dikonfigurasi sebagai [{"name":"col1","type":"JSON_HEX"}], nilai yang ditulis ke record Kafka adalah string {"col1":"0102"}.