All Products
Search
Document Center

DataWorks:Sumber data HBase

Last Updated:Jun 22, 2026

Sumber data HBase memungkinkan Anda membaca dari dan menulis ke HBase. Topik ini menjelaskan kemampuan sinkronisasi datanya di DataWorks.

Versi yang didukung

Terdapat dua jenis plugin HBase: plugin HBase dan plugin HBase{xx}xsql. Plugin HBase{xx}xsql memerlukan HBase dan Phoenix.

  1. Plugin HBase:

    Mendukung HBase0.94.x, HBase1.1.x, dan HBase2.x. Antarmuka tanpa kode (codeless UI) dan editor kode (code editor) keduanya didukung. Gunakan parameter hbaseVersion untuk menentukan versinya.

    • Jika versi HBase Anda adalah HBase0.94.x, atur hbaseVersion ke 094x baik untuk reader maupun writer.

      "reader": {
              "hbaseVersion": "094x"
          }
      "writer": {
              "hbaseVersion": "094x"
          }
    • Jika versi HBase Anda adalah HBase1.1.x atau HBase2.x, atur hbaseVersion ke 11x baik untuk reader maupun writer.

      "reader": {
              "hbaseVersion": "11x"
          }
      "writer": {
              "hbaseVersion": "11x"
          }
      Plugin HBase1.1.x kompatibel dengan HBase 2.0.
  2. Plugin HBase{xx}xsql

    1. Plugin HBase20xsql: Mendukung HBase2.x dan Phoenix5.x. Hanya editor kode yang didukung.

      Plugin HBase11xsql: Mendukung HBase1.1.x dan Phoenix5.x. Hanya editor kode yang didukung.

    2. Plugin writer HBase{xx}xsql menyediakan cara sederhana untuk mengimpor data secara batch ke tabel SQL (Phoenix) di HBase. Phoenix melakukan encoding terhadap rowkey. Menulis data menggunakan API HBase memerlukan konversi data manual, proses yang kompleks dan rentan kesalahan.

      Catatan

      Plugin ini menggunakan driver JDBC Phoenix untuk mengeksekusi pernyataan UPSERT, menulis data ke tabel secara batch. Antarmuka tingkat tingginya juga memungkinkan pembaruan sinkron ke tabel indeks.

Batasan

HBase Reader

HBase20xsql Reader

HBase11xsql Writer

  • Sharding tabel dibatasi pada satu kolom saja, yang harus merupakan primary key.

  • Untuk sharding merata berdasarkan konkurensi tugas, kolom sharding harus bertipe integer atau string.

  • Nama tabel, nama skema, dan nama kolom bersifat case-sensitive dan harus sesuai dengan casing pada tabel Phoenix.

  • HBase20xsql Reader hanya dapat membaca data melalui Phoenix QueryServer. Oleh karena itu, Anda harus menjalankan Phoenix QueryServer untuk menggunakan HBase20xsql Reader.

  • Hanya serverless resource group for Data Integration (direkomendasikan) yang didukung.

  • Mengimpor data bertimestamp tidak didukung.

  • Hanya tabel yang dibuat dengan Phoenix yang didukung, bukan tabel HBase native.

  • Urutan kolom pada writer harus sesuai dengan urutan kolom pada reader. Urutan kolom reader menentukan urutan kolom pada setiap baris output. Urutan kolom writer menentukan urutan kolom yang diharapkan pada data yang diterima. Contohnya:

    • Urutan kolom pada reader adalah c1, c2, c3, dan c4.

    • Urutan kolom pada writer adalah x1, x2, x3, dan x4.

    Dalam kasus ini, nilai kolom c1 diberikan ke kolom x1. Jika urutan kolom pada writer adalah x1, x2, x4, dan x3, maka nilai kolom c3 diberikan ke kolom x4, dan nilai kolom c4 diberikan ke kolom x3.

  • Mengimpor data ke tabel berindeks akan memperbarui semua indeks terkait secara sinkron.

Fitur

HBase Reader

HBase Reader mendukung mode normal dan multiVersionFixedColumn. Lihat Panduan pemetaan bidang HBase untuk instruksi konfigurasinya.

  • Pada mode normal, HBase Reader memperlakukan tabel HBase sebagai tabel dua dimensi standar (tabel lebar) dan membaca versi terbaru dari data.

    hbase:007:0> scan 'student'
    ROW                                   COLUMN+CELL
    s001                                 column=basic:age, timestamp=2026-03-09T14:41:40.240, value=20
    s001                                 column=basic:name, timestamp=2026-03-09T14:41:40.214, value=Tom
    s001                                 column=score:english, timestamp=2026-03-09T14:41:40.333, value=90
    s001                                 column=score:math, timestamp=2026-03-09T14:41:40.277, value=85
    1 row(s) in 0.0580 seconds 

    Tabel berikut menunjukkan data keluaran.

    Row key

    basic:age

    basic:name

    score:english

    score:math

    s001

    20

    Tom

    90

    85

  • Mode multiVersionFixedColumn: Membaca tabel HBase sebagai tabel sempit. Setiap catatan yang dikembalikan terdiri dari empat kolom: rowKey, family:qualifier, timestamp, dan value. Anda harus secara eksplisit menentukan kolom yang akan dibaca. Nilai setiap sel diperlakukan sebagai satu catatan. Jika terdapat beberapa versi, beberapa catatan akan dikembalikan.

    hbase:007:0> scan 'student',{VERSIONS=>5}
    ROW                                   COLUMN+CELL
    s001                                 column=basic:age, timestamp=2026-03-09T14:41:40.240, value=20
    s001                                 column=basic:age, timestamp=2026-03-09T14:30:00.100, value=19
    s001                                 column=basic:name, timestamp=2026-03-09T14:41:40.214, value=Tom
    s001                                 column=score:english, timestamp=2026-03-09T14:41:40.333, value=90
    s001                                 column=score:math, timestamp=2026-03-09T14:41:40.277, value=85
    1 row(s) in 0.0260 seconds }

    Row key

    family:qualifier

    Timestamp

    Value

    s001

    basic:age

    2026-03-09T14:41:40.240

    20

    s001

    basic:age

    2026-03-09T14:30:00.100

    19

    s001

    basic:name

    2026-03-09T14:41:40.214

    Tom

    s001

    score:english

    2026-03-09T14:41:40.333

    90

    s001

    score:math

    2026-03-09T14:41:40.277

    85

HBase Writer

  • Aturan pembuatan rowkey: Saat ini, HBase Writer mendukung penggabungan beberapa bidang dari sumber data untuk digunakan sebagai rowkey tabel HBase.

  • Anda dapat menentukan versi (timestamp) untuk menulis data ke HBase. Opsi yang tersedia adalah:

    • Gunakan waktu saat ini sebagai versi.

    • Tentukan kolom sumber sebagai versi.

    • Tentukan waktu tertentu sebagai versi.

Tipe data yang didukung

Baca batch

  • Tabel ini menunjukkan tipe data HBase yang didukung dan cara HBase Reader mengonversinya.

    Kategori

    Tipe kolom Data Integration

    Tipe data database

    Integer

    long

    short, int, dan long

    Floating-point

    double

    float dan double

    String

    string

    binary_string dan string

    Tanggal dan waktu

    date

    date

    Byte

    bytes

    bytes

    Boolean

    boolean

    boolean

  • HBase20xsql Reader mendukung sebagian besar, namun tidak semua, tipe data Phoenix. Pastikan tipe data Anda didukung.

  • Tabel ini menunjukkan cara HBase20xsql Reader memetakan tipe data Phoenix ke tipe internal DataX.

    Tipe internal DataX

    Tipe data Phoenix

    long

    INTEGER, TINYINT, SMALLINT, BIGINT

    double

    FLOAT, DECIMAL, DOUBLE

    string

    CHAR, VARCHAR

    date

    DATE, TIME, TIMESTAMP

    bytes

    BINARY, VARBINARY

    boolean

    BOOLEAN

Tulis batch

Tabel ini mencantumkan tipe data yang didukung oleh HBase Writer.

Catatan
  • Tipe data yang dikonfigurasi untuk setiap kolom harus sesuai dengan tipe data yang sesuai di tabel HBase.

  • Hanya tipe data yang tercantum dalam tabel ini yang didukung.

Kategori

Tipe data database

Integer

INT, LONG, dan SHORT

Floating-point

FLOAT dan DOUBLE

Boolean

BOOLEAN

String

STRING

Perhatian

Jika Anda mengalami error "tried to access method com.google.common.base.Stopwatch" saat menguji konektivitas, tambahkan properti hbaseVersion ke konfigurasi sumber data untuk menentukan versi HBase.

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.

Konfigurasi sinkronisasi batch tabel tunggal

  • Untuk detailnya, lihat Konfigurasi antarmuka tanpa kode dan konfigurasi mode skrip.

    Karena HBase merupakan sumber data tanpa skema (schemaless), antarmuka tanpa kode tidak menampilkan pemetaan bidang secara default. Anda harus mengonfigurasinya secara manual.

    Saat menggunakan HBase sebagai sumber data, Anda harus terlebih dahulu memilih Output Mode: mode normal atau mode multiVersionFixedColumn.

    Konfigurasi pemetaan bidang berbeda untuk setiap mode:

    • mode normal: Ini adalah mode default. Mode ini membaca tabel HBase sebagai tabel dua dimensi standar dan mengambil versi terbaru dari data. Saat menggunakan HBase sebagai sumber data, Anda harus mengonfigurasi pemetaan antara Source Field dan Target Field. Bidang sumber dan tujuan memiliki pemetaan satu-ke-satu. Karena tabel sumber tidak memiliki bidang tetap, bidang dipetakan berdasarkan urutannya secara default. Untuk mengubah pemetaan, Anda harus mengedit urutan bidang secara manual.

      Versi baru

      Dalam konfigurasi pemetaan bidang, pemetaannya adalah: rowkeyrowkey, basic:ageage, basic:namename, score:englishenglish, dan score:mathmath. Bidang sumber ditampilkan dalam format JSON dan mencakup properti name dan type (keduanya string).

      Versi lama

      Dalam konfigurasi pemetaan bidang, bidang sumber ditampilkan dalam format Type|ColumnFamily:ColumnName, termasuk string|rowkey, string|basic:age, string|basic:name, string|score:english, dan string|score:math. Ini dipetakan ke bidang target rowkey, age, name, english, dan math, masing-masing.

      Tabel target berisi bidang seperti rowkey, age, name, english, math, dan pt. Contohnya: rowkey=s001, age=20, name=Tom, english=90, math=85, pt=222222.

    • mode multiVersionFixedColumn: Setiap catatan output terdiri dari empat kolom (rowKey, family:qualifier, timestamp, dan value), dan mode ini memungkinkan Anda membaca beberapa versi data. Source Field dikonfigurasi dalam format ColumnFamily:Qualifier, seperti basic:age. Tabel tujuan memiliki empat kolom tetap: row_key, cf, timestamp_col, dan value. Tidak diperlukan konfigurasi pemetaan.

      Versi baru

      Di area pemetaan bidang, petakan bidang sumber ke bidang target. Bidang sumber dalam format JSON. Contoh pemetaan: {"name":"rowkey","type":"string"} dipetakan ke bidang target rowkey, {"name":"basic:age","type":"string"} dipetakan ke family, {"name":"basic:name","type":"string"} dipetakan ke timestamp, dan {"name":"score:english","type":"string"} dipetakan ke value. Sistem tidak menyinkronkan bidang sumber yang tidak dipetakan {"name":"score:math","type":"string"}. Anda dapat mengklik tombol Edit di kedua sisi untuk mengedit bidang sumber dan target masing-masing.

      Versi lama

      Di area pemetaan bidang, bidang sumber mencakup string|rowkey, string|basic:age, string|basic:name, string|score:english, dan string|score:math. bidang target mencakup rowkey, family, timestamp, dan value. Bidang sumber dan target dipetakan baris per baris.

      Tabel target berisi empat kolom tetap: row_key, cf, timestamp_col, dan value. Contohnya: row_key=s001, cf=basic:age, timestamp_col=1234567890, value=20.

    • Saat menggunakan HBase sebagai tujuan data (hanya mode normal yang didukung), Anda harus mengonfigurasi Target Field dan rowkey. Anda dapat membentuk bidang rowkey dengan menggabungkan beberapa bidang sumber.

  • Untuk parameter dan contoh skrip mode skrip, lihat Lampiran: Contoh skrip dan deskripsi parameter.

FAQ

  • Q: Berapa pengaturan konkurensi yang tepat? Apakah meningkatkan konkurensi membantu ketika kecepatan impor lambat?

    A: Ukuran heap default untuk Java Virtual Machine (JVM) dalam proses impor data adalah 2 GB. Konkurensi diimplementasikan melalui multithreading dan dikonfigurasi berdasarkan jumlah saluran (channel). Thread yang berlebihan dapat menurunkan performa tanpa meningkatkan kecepatan impor karena sering terjadi pengumpulan sampah (garbage collection). Kami merekomendasikan penggunaan 5–10 thread konkuren (saluran).

  • Q: Berapa nilai optimal untuk batchSize?

    A: Nilai defaultnya adalah 256. Hitung batchSize optimal berdasarkan ukuran baris. Satu batch biasanya harus berisi data sebesar 2–4 MB. Bagilah volume data ini dengan ukuran baris untuk menentukan batchSize yang direkomendasikan.

  • Q: Saat membaca data dari HBase dalam mode multiVersionFixedColumn, saya menerima error java.lang.StringIndexOutOfBoundsException: String index out of range: -1. Bagaimana cara mengatasinya?

    A: Error ini biasanya terjadi karena bidang name dalam konfigurasi kolom tidak mengikuti format columnFamily:qualifier (columnFamily:qualifier). Misalnya, Anda mungkin hanya menentukan qualifier-nya saja, seperti age, bukan basic:age. Untuk mengatasi hal ini, pastikan name untuk setiap kolom kecuali rowkey diformat sebagai columnFamily:qualifier.

Lampiran: Contoh skrip dan parameter

Konfigurasi 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.

Contoh HBase Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"hbase",// Nama plugin.
            "parameter":{
                "mode":"normal",// Menentukan mode untuk membaca data dari HBase. Nilai yang valid: `normal` dan `multiVersionFixedColumn`.
                "scanCacheSize":"256",// Menentukan jumlah baris yang diambil dari server per RPC.
                "scanBatchSize":"100",// Menentukan jumlah kolom yang diambil dari server per RPC. 
                "hbaseVersion":"094x/11x",// Versi HBase.
                "column":[// Bidang yang akan dibaca.
                    {
                        "name":"rowkey",// Nama bidang.
                        "type":"string"// Tipe data.
                    },
                    {
                        "name":"basic:age",
                        "type":"string"
                    },
                    {
                        "name":"basic:name",
                        "type":"string"
                    },
                    {
                        "name":"score:english",
                        "type":"string"
                    },
                    {
                        "name":"score:math",
                        "type":"string"
                    }
                ],
                "range":{// Menentukan rentang rowkey yang akan dibaca.
                    "endRowkey":"",// Rowkey akhir.
                    "isBinaryRowkey":true,// Menentukan apakah akan menggunakan konversi biner untuk startRowkey dan endRowkey. Nilai default adalah false.
                    "startRowkey":""// Rowkey awal.
                },
                "maxVersion":"",// Menentukan jumlah versi yang akan dibaca dalam mode multi-versi.
                "encoding":"UTF-8",// Format encoding.
                "table":"student",// Nama tabel.
                "hbaseConfig":{// Konfigurasi koneksi untuk kluster HBase, dalam format JSON.
                    "hbase.zookeeper.quorum":"hostname",
                    "hbase.rootdir":"hdfs://ip:port/database",
                    "hbase.cluster.distributed":"true"
                }
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"odps",// Nama plugin untuk tujuan. Contoh ini menggunakan MaxCompute. Anda dapat menggantinya dengan plugin Writer lain.
            "parameter":{
                "partition":"",// Informasi partisi untuk tabel tujuan. Tidak diperlukan untuk tabel non-partisi.
                "truncate":true,// Menentukan apakah akan mengosongkan tabel atau partisi tujuan sebelum menulis data.
                "datasource":"odps_datasource",// Nama sumber data MaxCompute.
                "column":[// Bidang tujuan.
                    "rowkey",
                    "basic_age",
                    "basic_name",
                    "score_english",
                    "score_math"
                ],
                "table":"student_target"// Nama tabel MaxCompute tujuan.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan error yang diizinkan sebelum tugas gagal.
        },
        "speed":{
            "throttle":true,// Menentukan apakah akan mengaktifkan pembatasan laju. Jika diatur ke false, parameter mbps diabaikan.
            "concurrent":1,// Jumlah tugas konkuren.
            "mbps":"12"// Batas laju dalam megabyte per detik (MB/s).
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Skrip HBase Reader (mode multiVersionFixedColumn)

Contoh berikut menunjukkan skrip lengkap untuk membaca data dari HBase dalam mode multiVersionFixedColumn dan menulisnya ke MaxCompute. Dalam mode ini, nilai setiap sel di HBase dikonversi menjadi catatan terpisah. Setiap catatan terdiri dari empat kolom: rowkey, family:qualifier, timestamp, dan value.

{
    "type":"job",
    "version":"2.0",
    "steps":[
        {
            "stepType":"hbase",// Nama plugin.
            "parameter":{
                "mode":"multiVersionFixedColumn",// Mode untuk membaca data dari HBase. Contoh ini menggunakan mode multiVersionFixedColumn.
                "scanCacheSize":"256",// Jumlah baris yang dibaca klien HBase dari server dalam setiap panggilan prosedur jarak jauh (RPC).
                "scanBatchSize":"100",// Jumlah kolom yang dibaca klien HBase dari server dalam setiap RPC.
                "hbaseVersion":"20x",// Versi HBase.
                "datasource":"hbase_datasource",// Nama sumber data HBase.
                "column":[// Kolom yang akan dibaca. Kolom pertama harus rowkey. Nama kolom lain harus dalam format "keluarga kolom:qualifier".
                    {
                        "name":"rowkey",// Kolom rowkey.
                        "type":"string"
                    },
                    {
                        "name":"basic:age",// Kolom age dalam keluarga kolom basic.
                        "type":"string"
                    },
                    {
                        "name":"basic:name",// Kolom name dalam keluarga kolom basic.
                        "type":"string"
                    },
                    {
                        "name":"score:english",// Kolom english dalam keluarga kolom score.
                        "type":"string"
                    },
                    {
                        "name":"score:math",// Kolom math dalam keluarga kolom score.
                        "type":"string"
                    }
                ],
                "range":{
                    "isBinaryRowkey":false
                },
                "maxVersion":"-1",// Jumlah maksimum versi yang akan dibaca. Parameter ini wajib dalam mode multiVersionFixedColumn. Nilai -1 berarti semua versi dibaca.
                "encoding":"UTF-8",// Format encoding.
                "table":"student"// Nama tabel HBase.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"odps",// Nama plugin tujuan. Contoh ini menggunakan MaxCompute.
            "parameter":{
                "partition":"",// Partisi tabel tujuan. Parameter ini tidak diperlukan untuk tabel non-partisi.
                "truncate":true,// Jika diatur ke true, ini akan mengosongkan tabel atau partisi tujuan sebelum menulis data.
                "datasource":"odps_datasource",// Nama sumber data MaxCompute.
                "column":[// Tujuan memiliki empat kolom tetap yang masing-masing sesuai dengan rowkey, family:qualifier, timestamp, dan value dari sumber.
                    "row_key",
                    "cf",
                    "timestamp_col",
                    "value"
                ],
                "table":"hbase_multiversion_target"// Nama tabel MaxCompute tujuan.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan error yang diizinkan.
        },
        "speed":{
            "throttle":false,// Tidak ada pembatasan laju.
            "concurrent":2// Konkurensi tugas.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}
Catatan

Tabel tujuan di MaxCompute harus dibuat terlebih dahulu. Contohnya: CREATE TABLE IF NOT EXISTS hbase_multiversion_target (row_key STRING, cf STRING, timestamp_col STRING, value STRING);

Parameter skrip HBase Reader

Parameter

Deskripsi

Wajib

Default

haveKerberos

Jika haveKerberos bernilai true, kluster HBase memerlukan autentikasi Kerberos.

Catatan
  • Jika Anda mengatur parameter ini ke true, Anda juga harus mengonfigurasi parameter berikut:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • Jika autentikasi Kerberos tidak diaktifkan untuk kluster HBase, Anda tidak perlu mengonfigurasi parameter ini.

Tidak

false

hbaseConfig

Konfigurasi yang diperlukan untuk terhubung ke kluster HBase, dalam format JSON. Parameter hbase.zookeeper.quorum, yang menentukan endpoint ZooKeeper untuk HBase, wajib diisi. Anda juga dapat menambahkan konfigurasi klien HBase lainnya, seperti cache dan pengaturan batch pemindaian, untuk mengoptimalkan interaksi dengan server.

Catatan

Jika Anda terhubung ke instans ApsaraDB for HBase, Anda harus menggunakan endpoint jaringan internalnya.

Ya

Tidak ada

mode

Mode baca yang didukung untuk HBase adalah normal dan multiVersionFixedColumn.

Ya

Tidak ada

table

Nama tabel HBase yang akan dibaca. Nama tabel bersifat case-sensitive.

Ya

Tidak ada

encoding

Format encoding, seperti UTF-8 atau GBK, digunakan untuk mengonversi nilai biner HBase byte[] menjadi String.

Tidak

utf-8

column

Bidang HBase yang akan dibaca. Parameter ini wajib diisi dalam mode normal dan mode multiVersionFixedColumn.

  • Dalam mode normal:

    Parameter name menentukan kolom HBase yang akan dibaca. Kecuali untuk rowkey, nilai parameter ini harus dalam format column family:qualifier. Parameter type menentukan tipe data sumber, dan parameter format menentukan format untuk tipe tanggal. Parameter value menentukan bahwa kolom tersebut adalah konstanta. Jika Anda menggunakan parameter value, data tidak dibaca dari HBase. Sebaliknya, kolom yang sesuai akan dibuat secara otomatis berdasarkan nilai yang ditentukan. Format konfigurasinya adalah sebagai berikut:

    "column": 
    [
    {
      "name": "rowkey",
      "type": "string"
    },
    {
      "value": "test",
      "type": "string"
    }
    ]

    Dalam mode normal, untuk informasi Kolom yang Anda tentukan, parameter type wajib diisi, dan Anda harus menentukan salah satu parameter name atau value.

  • Mode multiVersionFixedColumn

    Parameter name menentukan kolom HBase yang akan dibaca. Kecuali untuk rowkey, nilainya harus dalam format column family:qualifier. Parameter type menentukan tipe data sumber, dan parameter format menentukan format untuk tipe tanggal. Kolom konstanta tidak didukung dalam mode multiVersionFixedColumn. Format konfigurasinya adalah sebagai berikut:

    "column": 
    [
    {
      "name": "rowkey",
      "type": "string"
    },
    {
      "name": "info:age",
      "type": "string"
    }
    ]

Ya

Tidak ada

maxVersion

Jumlah maksimum versi sel yang akan dibaca dalam mode multi-versi. Nilai yang valid adalah -1 (semua versi) atau bilangan bulat lebih besar dari 1.

Wajib dalam mode multiVersionFixedColumn.

Tidak ada

range

Menentukan rentang rowkey yang akan dibaca.

  • startRowkey: Menentukan rowkey awal.

  • endRowkey: Menentukan rowkey akhir.

  • isBinaryRowkey: Menentukan cara startRowkey dan endRowkey dikonversi menjadi byte[]. Nilai default adalah false. Jika parameter ini diatur ke true, metode Bytes.toBytesBinary(rowkey) dipanggil. Jika diatur ke false, metode Bytes.toBytes(rowkey) dipanggil. Format konfigurasinya adalah sebagai berikut:

    "range": {
    "startRowkey": "aaa",
    "endRowkey": "ccc",
    "isBinaryRowkey":false
    }

Tidak

Tidak ada

scanCacheSize

Jumlah baris yang diambil dari HBase dalam satu panggilan prosedur jarak jauh (RPC).

Tidak

256

scanBatchSize

Jumlah kolom yang diambil dari HBase dalam satu RPC. Atur ke -1 untuk mengambil semua kolom.

Catatan

Nilai scanBatchSize harus lebih besar dari jumlah kolom aktual untuk menghindari risiko kualitas data.

Tidak

100

Skrip HBase Writer

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"hbase",// Nama plugin.
            "parameter":{
                "mode":"normal",// Mode penulisan untuk HBase.
                "walFlag":"false",// Atur ke `false` untuk menonaktifkan write-ahead logging (WAL).
                "hbaseVersion":"094x",// Versi HBase.
                "rowkeyColumn":[// Kolom yang membentuk rowkey HBase.
                    {
                        "index":"0",// Indeks kolom data sumber.
                        "type":"string"// Tipe data untuk bagian rowkey ini.
                    },
                    {
                        "index":"-1",
                        "type":"string",
                        "value":"_"
                    }
                ],
                "nullMode":"skip",// Menentukan cara menangani nilai null dari sumber.
                "column":[// Kolom tujuan di tabel HBase.
                    {
                        "name":"columnFamilyName1:columnName1",// Nama kolom, dalam format `family:qualifier`.
                        "index":"0",// Indeks kolom data sumber.
                        "type":"string"// Tipe data nilai kolom.
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "index":"1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "index":"2",
                        "type":"string"
                    }
                ],
                "encoding":"utf-8",// Pengkodean karakter.
                "table":"",// Nama tabel HBase tujuan.
                "hbaseConfig":{// Konfigurasi koneksi kluster HBase, dalam format JSON.
                    "hbase.zookeeper.quorum":"hostname",
                    "hbase.rootdir":"hdfs: //ip:port/database",
                    "hbase.cluster.distributed":"true"
                }
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan error yang diizinkan.
        },
        "speed":{
            "throttle":true,// Mengaktifkan (`true`) atau menonaktifkan (`false`) pembatasan laju. Jika `true`, laju ditentukan oleh parameter `mbps`.
            "concurrent":1, // Jumlah tugas penulisan konkuren.
            "mbps":"12"// Laju transfer maksimum dalam megabyte per detik (MB/s).
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter skrip HBase writer

Parameter

Deskripsi

Wajib

Default

haveKerberos

Menentukan apakah kluster HBase memerlukan autentikasi Kerberos. Atur parameter ini ke true untuk mengaktifkan autentikasi Kerberos.

Catatan
  • Jika Anda mengatur parameter ini ke true, Anda harus mengonfigurasi parameter autentikasi Kerberos berikut:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • Parameter ini tidak diperlukan jika autentikasi Kerberos dinonaktifkan.

Tidak

false

hbaseConfig

Konfigurasi JSON untuk menghubungkan ke kluster HBase. Parameter hbase.zookeeper.quorum wajib diisi dan menentukan endpoint ZooKeeper untuk kluster HBase. Anda juga dapat menambahkan konfigurasi klien HBase lainnya, seperti cache dan pengaturan batch pemindaian, untuk mengoptimalkan interaksi dengan server.

Catatan

Untuk terhubung ke database ApsaraDB for HBase, Anda harus menggunakan endpoint jaringan internalnya.

Ya

Tidak ada

mode

Mode untuk menulis data ke HBase. Hanya mode normal yang didukung saat ini.

Ya

Tidak ada

table

Nama tabel HBase yang akan ditulis. Parameter ini case-sensitive.

Ya

Tidak ada

encoding

Format encoding untuk mengonversi data STRING menjadi HBase byte[]. Nilai yang valid: UTF-8 dan GBK.

Tidak

UTF-8

column

Konfigurasi untuk kolom yang akan ditulis data:

  • index: Menentukan indeks kolom yang sesuai dari reader, dimulai dari 0.

  • name: Menentukan kolom di tabel HBase. Formatnya harus column family:column name.

  • type: Menentukan tipe data untuk operasi penulisan. Ini digunakan untuk mengonversi data ke format byte[] HBase.

Ya

Tidak ada

rowkeyColumn

Kolom rowkey di tabel HBase yang akan ditulis:

  • index: Menentukan indeks kolom yang sesuai dari reader, dimulai dari 0. Jika kolom tersebut adalah konstanta, atur parameter ini ke -1.

  • type: Menentukan tipe data untuk operasi penulisan. Ini digunakan untuk mengonversi data ke format byte[] HBase.

  • value: Konstanta, sering digunakan sebagai pemisah untuk menggabungkan beberapa bidang. Rowkey tidak boleh seluruhnya terdiri dari konstanta.

Formatnya adalah sebagai berikut.

"rowkeyColumn": [
          {
            "index":0,
            "type":"string"
          },
          {
            "index":-1,
            "type":"string",
            "value":"_"
          }
      ]

Ya

Tidak ada

versionColumn

Menentukan timestamp untuk operasi penulisan. Nilainya dapat berasal dari kolom sumber atau konstanta. Jika parameter ini tidak dikonfigurasi, sistem akan menggunakan waktu saat ini.

  • index: Menentukan indeks kolom yang sesuai dari reader, dimulai dari 0. Pastikan nilainya dapat dikonversi ke tipe LONG.

  • type: Jika tipe data adalah Date, sistem akan mencoba mengurai nilainya menggunakan format yyyy-MM-dd HH:mm:ss dan yyyy-MM-dd HH:mm:ss SSS. Jika digunakan nilai timestamp tertentu, atur index ke -1.

  • value: Nilai timestamp konstan bertipe LONG.

Contoh formatnya adalah sebagai berikut.

  • "versionColumn": {
      "index": 1
    }
  • "versionColumn": {
      "index": -1,
      "value": 123456789
    }

Tidak

Tidak ada

nullMode

Menentukan cara menangani nilai null dalam data sumber:

  • skip: Melewatkan penulisan kolom ke HBase.

  • empty: Menulis HConstants.EMPTY_BYTE_ARRAY, yaitu new byte [0].

Tidak

skip

walFlag

Saat klien HBase mengirimkan data, operasi tersebut pertama-tama ditulis ke log write-ahead (WAL) sebelum ditulis ke MemStore. Proses ini memastikan ketahanan data. Untuk meningkatkan performa penulisan, Anda dapat menonaktifkan WAL dengan mengatur parameter ini ke false.

Tidak

false

writeBufferSize

Ukuran buffer penulisan untuk klien HBase, dalam byte. Parameter ini digunakan bersama autoflush.

autoflush (dinonaktifkan secara default):

  • true: Saat true, klien mengirim permintaan untuk setiap operasi put, dan buffer penulisan ini tidak digunakan.

  • false: Klien HBase hanya mengirim permintaan penulisan ke server HBase ketika cache penulisan di sisi klien penuh.

Tidak

8 MB

fileSystemUsername

Untuk mengatasi masalah izin Ranger selama tugas sinkronisasi, ubah tugas berbasis wizard ke mode skrip. Kemudian, atur parameter fileSystemUsername ke pengguna yang memiliki izin yang diperlukan. DataWorks kemudian akan mengakses HBase sebagai pengguna yang ditentukan ini.

Tidak

Tidak ada

Demo HBase20xsql Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"hbase20xsql",// Nama plugin.
            "parameter":{
                "queryServerAddress": "http://127.0.0.1:8765",  // Endpoint Phoenix QueryServer.
                "serialization": "PROTOBUF",  // Format serialisasi QueryServer.
                "table": "TEST",    // Tabel yang akan dibaca.
                "column": ["ID", "NAME"],   // Kolom yang akan dibaca.
                "splitKey": "ID"    // Kunci sharding, yang harus merupakan primary key tabel.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan error yang diizinkan.
        },
        "speed":{
            "throttle":true,// Mengaktifkan/menonaktifkan pembatasan laju. Jika true, laju dibatasi oleh parameter mbps.
            "concurrent":1,// Jumlah tugas konkuren.
            "mbps":"12"// Batas laju dalam MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter HBase20xsql Reader

Parameter

Deskripsi

Wajib

Default

queryServerAddress

Endpoint Phoenix QueryServer. Plugin HBase20xsql Reader menggunakan klien ringan untuk terhubung ke endpoint ini. Untuk meneruskan kredensial pengguna untuk ApsaraDB for HBase Performance-enhanced Edition (Lindorm), tambahkan properti user dan password ke string queryServerAddress. Contohnya: http://127.0.0.1:8765;user=root;password=root.

Ya

Tidak ada

serialization

Protokol serialisasi yang digunakan oleh Phoenix QueryServer.

Tidak

PROTOBUF

table

Nama tabel yang akan dibaca. Nama ini case-sensitive.

Ya

Tidak ada

schema

Skema yang berisi tabel tersebut.

Tidak

Tidak ada

column

Kolom yang akan disinkronkan. Gunakan array JSON untuk menentukan nama kolom. Jika Anda tidak menentukan parameter ini atau membiarkannya kosong, reader akan membaca semua kolom.

Tidak

Semua kolom

splitKey

Saat sebuah tabel dibaca, tabel tersebut di-shard. Jika Anda menentukan parameter splitKey, bidang yang diwakili oleh splitKey digunakan untuk sharding data. Hal ini memungkinkan sinkronisasi data untuk memulai tugas konkuren dan meningkatkan performa. Anda dapat memilih antara dua metode sharding berbeda. Jika parameter splitPoint kosong, tabel akan secara otomatis di-shard berdasarkan metode satu secara default:

  • Metode 1: Temukan nilai maksimum dan minimum berdasarkan splitKey, lalu shard secara merata sesuai dengan jumlah concurrent yang ditentukan.

    Catatan

    Kunci sharding harus bertipe integer atau string.

  • Metode 2: Reader mempartisi data berdasarkan splitPoints yang dikonfigurasi secara manual. Data kemudian disinkronkan berdasarkan jumlah tugas concurrent yang dikonfigurasi.

Ya

Tidak ada

splitPoints

Sharding otomatis berdasarkan nilai minimum dan maksimum kunci sharding mungkin tidak mencegah hot spot data. Untuk performa optimal, kami merekomendasikan menentukan titik sharding kustom berdasarkan startkey dan endkey Regions HBase Anda. Hal ini memastikan bahwa setiap tugas konkuren mengkueri satu Region saja.

Tidak

Tidak ada

where

Kondisi filter yang ditambahkan ke kueri tabel. HBase20xsql Reader membuat kueri SQL berdasarkan parameter column, table, dan where untuk mengekstrak data.

Tidak

Tidak ada

querySql

Untuk skenario penyaringan kompleks di mana parameter where tidak mencukupi, Anda dapat memberikan kueri SQL kustom. Jika Anda mengonfigurasi parameter ini, reader akan mengabaikan parameter column, table, where, dan splitKey. Parameter queryServerAddress tetap diperlukan.

Tidak

Tidak ada

Contoh HBase11xsql Writer

{
  "type": "job",
  "version": "1.0",
  "configuration": {
    "setting": {
      "errorLimit": {
        "record": "0"
      },
      "speed": {
            "throttle":true,// Mengaktifkan pembatasan laju. Jika diatur ke false, parameter mbps diabaikan.
            "concurrent":1, // Jumlah tugas konkuren.
            "mbps":"1"// Batas laju dalam MB/s.
      }
    },
    "reader": {
      "plugin": "odps",
      "parameter": {
        "datasource": "",
        "table": "",
        "column": [],
        "partition": ""
      }
    },
    "plugin": "hbase11xsql",
    "parameter": {
      "table": "Nama tabel HBase tujuan. Nama ini case-sensitive.",
      "hbaseConfig": {
        "hbase.zookeeper.quorum": "Endpoint ZooKeeper kluster HBase tujuan.",
        "zookeeper.znode.parent": "znode kluster HBase tujuan."
      },
      "column": [
        "columnName"
      ],
      "batchSize": 256,
      "nullMode": "skip"
    }
  }
}

Parameter HBase11xsql Writer

Parameter

Deskripsi

Wajib

Default

plugin

Menentukan nama plugin. Nilainya harus hbase11xsql.

Ya

Tidak ada

table

Menentukan nama tabel tujuan. Parameter ini case-sensitive. Nama tabel Phoenix biasanya huruf kapital.

Ya

Tidak ada

column

Menentukan nama kolom. Nama ini case-sensitive. Nama kolom Phoenix biasanya huruf kapital.

Catatan
  • Urutan kolom harus sesuai dengan output reader.

  • Anda tidak perlu menentukan tipe data. Writer secara otomatis mengambil metadata kolom dari Phoenix.

Ya

Tidak ada

hbaseConfig

Menentukan endpoint kluster HBase. Anda harus menentukan endpoint ZooKeeper (ZK) dalam format ip1,ip2,ip3.

Catatan
  • Gunakan koma (,) untuk memisahkan beberapa alamat IP.

  • Parameter znode opsional. Nilai defaultnya adalah /hbase.

Ya

Tidak ada

batchSize

Menentukan jumlah maksimum baris untuk penulisan batch.

Tidak

256

nullMode

Menentukan cara menangani nilai null dari data sumber.

  • skip: Writer melewatkan penulisan kolom. Jika nilai untuk kolom ini sudah ada di baris tujuan, writer akan menghapusnya.

  • empty: Writer memasukkan nilai kosong. Nilai kosong adalah 0 untuk tipe numerik dan string kosong untuk tipe varchar.

Tidak

skip