全部产品
Search
文档中心

DataWorks:Sumber data HBase

更新时间:Mar 14, 2026

Sumber data HBase mendukung pembacaan dan penulisan ke HBase. Topik ini menjelaskan kemampuan Sinkronisasi Data untuk sumber data HBase di DataWorks.

Versi yang didukung

Plugin HBase terbagi menjadi dua jenis: HBase dan HBase{xx}xsql. Plugin HBase{xx}xsql memerlukan HBase dan Phoenix.

  1. Plugin HBase:

    Plugin HBase mendukung HBase 0.94.x, HBase 1.1.x, dan HBase 2.x, serta kompatibel dengan antarmuka tanpa kode (codeless UI) maupun editor kode. Anda dapat menggunakan parameter hbaseVersion untuk menentukan versi.

    • Jika Anda menggunakan HBase 0.94.x, atur parameter hbaseVersion ke 094x untuk reader dan writer.

      "reader": {
              "hbaseVersion": "094x"
          }
      "writer": {
              "hbaseVersion": "094x"
          }
    • Jika Anda menggunakan HBase 1.1.x atau HBase 2.x, atur parameter hbaseVersion ke 11x untuk reader dan writer.

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

    1. Plugin HBase20xsql mendukung HBase 2.x dan Phoenix 5.x. Hanya editor kode yang didukung.

      Plugin HBase11xsql mendukung HBase 1.1.x dan Phoenix 5.x. Hanya editor kode yang didukung.

    2. Plugin Writer HBase{xx}xsql memungkinkan Anda mengimpor data secara batch ke tabel SQL (Phoenix) di HBase. Phoenix melakukan encoding terhadap rowkey. Menulis data secara langsung menggunakan API HBase memerlukan konversi data manual, yang merupakan proses kompleks dan rentan kesalahan.

      Catatan

      Plugin ini menggunakan driver Java Database Connectivity (JDBC) Phoenix untuk mengeksekusi pernyataan UPSERT dan menulis data ke tabel secara batch. Karena plugin ini menggunakan API tingkat tinggi, plugin ini juga memperbarui secara sinkron semua tabel indeks terkait.

Batasan

HBase Reader

HBase20xsql Reader

HBase11xsql Writer

  • Tabel hanya dapat di-shard berdasarkan satu kolom kunci primer.

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

  • Nama tabel, skema, dan kolom bersifat case-sensitive dan harus sesuai dengan casing yang digunakan di tabel Phoenix.

  • HBase20xsql Reader hanya membaca data melalui Phoenix QueryServer. Anda harus menjalankan layanan QueryServer di Phoenix sebelum menggunakan plugin ini.

  • Plugin ini hanya mendukung kelompok sumber daya arsitektur tanpa server untuk Integrasi Data (disarankan).

  • Plugin ini tidak mendukung pengimporan data dengan timestamp.

  • Plugin ini hanya menulis data ke tabel yang dibuat dengan Phoenix dan tidak mendukung tabel HBase native.

  • Urutan kolom pada reader menentukan struktur baris output, sedangkan urutan kolom pada writer menentukan urutan input yang diharapkan. 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 dari kolom c1 reader ditulis ke kolom x1 writer. Jika urutan kolom writer adalah x1, x2, x4, dan x3, maka nilai dari c3 ditulis ke x4, dan nilai dari c4 ditulis ke x3.

  • Plugin ini mendukung pengimporan data ke tabel berindeks dan memperbarui secara sinkron semua tabel indeks terkait.

Fitur

HBase Reader

Mode normal dan multiVersionFixedColumn didukung. Untuk petunjuk konfigurasi, lihat Panduan Konfigurasi Pemetaan Bidang HBase.

  • Mode normal: Membaca tabel HBase sebagai tabel dua dimensi biasa (tabel lebar) untuk mengambil versi terbaru 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 contoh data yang dibaca.

    Rowkey

    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 dikembalikan sebagai catatan terpisah. Jika sebuah sel memiliki 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 }

    Tabel berikut menunjukkan contoh data empat kolom yang dihasilkan.

    Rowkey

    column: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 untuk menghasilkan rowkey tabel HBase.

  • Opsi timestamp (version) berikut tersedia untuk menulis data ke HBase:

    • Gunakan waktu saat ini sebagai versi.

    • Gunakan nilai dari kolom sumber sebagai versi.

    • Tentukan waktu tetap sebagai versi.

Tipe data yang didukung

Pembacaan batch

  • Tabel berikut mencantumkan pemetaan tipe data untuk HBase Reader.

    Kategori

    Tipe kolom integrasi data

    Tipe database

    Integer

    long

    short, int, dan long

    Floating-point

    double

    float dan double

    String

    string

    binary_string dan string

    Date and Time

    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 berikut mencantumkan pemetaan tipe data untuk HBase20xsql Reader.

    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

Penulisan batch

Tabel berikut mencantumkan pemetaan tipe data untuk HBase Writer.

Catatan
  • Konfigurasi kolom harus sesuai dengan tipe kolom di tabel HBase.

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

Kategori

Tipe database

Integer

INT, LONG, dan SHORT

Floating-point

FLOAT dan DOUBLE

Boolean

BOOLEAN

String

STRING

Peringatan

Jika Anda menemui pesan error "tried to access method com.google.common.base.Stopwatch" saat menguji konektivitas, tambahkan parameter hbaseVersion ke konfigurasi sumber data.

Tambahkan sumber data

Sebelum mengembangkan task 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.

Task sinkronisasi data

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

Sinkronisasi batch tabel tunggal

  • Untuk petunjuknya, lihat Gunakan antarmuka tanpa kode dan Gunakan editor kode.

    Saat menggunakan Antarmuka Tanpa Kode, Pemetaan Bidang tidak ditampilkan secara default karena HBase memiliki skema fleksibel. Anda harus mengonfigurasi pemetaan secara manual.

    Saat menggunakan HBase sebagai sumber, Anda harus terlebih dahulu memilih Output Mode: Tabel lebar (mode normal) atau Tabel sempit (mode multiVersionFixedColumn).

    Konfigurasi pemetaan bidang berbeda antara kedua mode tersebut:

    • Tabel lebar (mode normal): Ini adalah mode default. Mode ini membaca tabel HBase sebagai tabel dua dimensi standar dan mengambil versi terbaru data. Saat HBase digunakan sebagai sumber, Anda harus mengonfigurasi pemetaan antara Source Fields dan Target Fields. Seperti yang ditunjukkan pada gambar, terdapat pemetaan satu-ke-satu antara bidang sumber dan target. Karena tabel sumber tidak memiliki bidang tetap, bidang dipetakan per baris secara default. Untuk mengubah pemetaan ini, Anda harus mengedit urutan bidang secara manual.

      Pengembangan data baru

      image

      Pengembangan data lama

      image

      Hasil di tabel target:

      image

    • Tabel sempit (mode multiVersionFixedColumn): Setiap catatan output terdiri dari empat kolom (rowKey, family:qualifier, timestamp, dan value), yang memungkinkan Anda membaca beberapa versi data. Konfigurasikan Source Field dengan format ColumnFamily:Qualifier (misalnya, basic:age). Targetnya adalah tabel tetap dengan empat kolom (row_key, cf, timestamp_col, dan value). Tidak diperlukan pemetaan bidang untuk mode ini.

      Pengembangan data baru

      image

      Pengembangan data lama

      image

      Hasil di tabel target:

      image

    • Saat HBase digunakan sebagai tujuan data (hanya mode normal yang didukung), Anda perlu mengonfigurasi Target Fields dan rowkey secara terpisah. Kolom rowkey dapat berupa gabungan beberapa bidang sumber.

  • Untuk daftar lengkap parameter dan contoh skrip untuk Editor Kode, lihat Lampiran: Demo Skrip dan Deskripsi Parameter.

FAQ

  • Q: Berapa pengaturan konkurensi yang disarankan? Apakah meningkatkan konkurensi membantu mempercepat impor yang lambat?

    A: Ukuran heap default untuk proses impor data di Java Virtual Machine (JVM) adalah 2 GB. Konkurensi diimplementasikan menggunakan multi-threading. Menggunakan terlalu banyak thread mungkin tidak meningkatkan kecepatan impor dan justru dapat menurunkan performa akibat Pengumpulan sampah (GC) yang sering terjadi. Kami merekomendasikan pengaturan konkurensi antara 5 hingga 10.

  • Q: batchSize—berapa nilai yang sesuai?

    A: Nilai defaultnya adalah 256, tetapi nilai optimal batchSize harus dihitung berdasarkan ukuran setiap baris. Satu operasi biasanya memproses data sebesar 2 MB hingga 4 MB. Anda dapat menghitung batchSize dengan membagi jumlah tersebut dengan ukuran baris.

  • Q: Saat saya menggunakan mode multiVersionFixedColumn untuk membaca data dari HBase, saya mengalami error java.lang.StringIndexOutOfBoundsException: String index out of range: -1. Bagaimana cara mengatasi masalah ini?

    A: Error ini biasanya terjadi karena bidang name dalam konfigurasi kolom tidak menggunakan format Column Family:Column Qualifier (columnFamily:qualifier). Misalnya, Anda hanya menentukan qualifier kolom age tanpa awalan basic:age. Pastikan bahwa name setiap kolom kecuali rowkey menyertakan awalan family kolom dalam format columnFamily:qualifier.

Lampiran: Contoh skrip dan parameter

Konfigurasikan task sinkronisasi batch menggunakan editor kode

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

Contoh skrip HBase Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"hbase",// Nama plugin.
            "parameter":{
                "mode":"normal",// Mode untuk membaca data dari HBase. Nilai yang valid: normal dan multiVersionFixedColumn.
                "scanCacheSize":"256",// Jumlah baris yang dibaca klien HBase dari server dalam setiap panggilan prosedur remote (RPC).
                "scanBatchSize":"100",// Jumlah kolom yang dibaca klien HBase dari server dalam setiap RPC. 
                "hbaseVersion":"094x/11x",// Versi HBase.
                "column":[// Kolom yang akan dibaca.
                    {
                        "name":"rowkey",// Nama kolom.
                        "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":{// Rentang rowkey untuk HBase Reader.
                    "endRowkey":"",// Rowkey akhir.
                    "isBinaryRowkey":true,// Menentukan cara mengonversi startRowkey dan endRowkey yang dikonfigurasi ke array byte. Nilai default: false.
                    "startRowkey":""// Rowkey awal.
                },
                "maxVersion":"",// Jumlah versi yang dibaca dalam mode multiVersionFixedColumn.
                "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 tujuan. Contoh ini menggunakan MaxCompute, tetapi Anda dapat menggantinya dengan plugin writer lain.
            "parameter":{
                "partition":"",// Informasi partisi tabel tujuan. Anda tidak perlu mengonfigurasi parameter ini untuk tabel non-partisi.
                "truncate":true,// Menentukan apakah data yang ada di tabel atau partisi tujuan akan dihapus sebelum operasi penulisan. Nilai true berarti data dihapus.
                "datasource":"odps_datasource",// Nama sumber data MaxCompute.
                "column":[// Daftar kolom 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.
        },
        "speed":{
            "throttle":true,// Menentukan apakah Pembatasan kecepatan diaktifkan. Jika diatur ke true, data ditransfer pada laju yang ditentukan oleh `mbps`. Jika diatur ke false, parameter `mbps` diabaikan dan tidak ada batas laju.
            "concurrent":1,// Jumlah maksimum thread konkuren.
            "mbps":"12"// Laju transfer maksimum. Satuan: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Contoh skrip HBase Reader (mode multiVersionFixedColumn)

Contoh berikut menunjukkan konfigurasi skrip lengkap yang membaca data dari HBase menggunakan mode multiVersionFixedColumn dan menulis data ke MaxCompute. Dalam mode ini, nilai setiap sel di HBase diubah 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 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 semua kolom lain harus dalam format "ColumnFamily:Qualifier".
                    {
                        "name":"rowkey",// Kolom rowkey.
                        "type":"string"
                    },
                    {
                        "name":"basic:age",// Kolom age dalam family kolom basic.
                        "type":"string"
                    },
                    {
                        "name":"basic:name",// Kolom name dalam family kolom basic.
                        "type":"string"
                    },
                    {
                        "name":"score:english",// Kolom english dalam family kolom score.
                        "type":"string"
                    },
                    {
                        "name":"score:math",// Kolom math dalam family kolom score.
                        "type":"string"
                    }
                ],
                "range":{
                    "isBinaryRowkey":false
                },
                "maxVersion":"-1",// Membaca semua versi data. 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":"",// Informasi partisi tabel tujuan. Anda tidak perlu mengonfigurasi parameter ini untuk tabel non-partisi.
                "truncate":true,// Menentukan apakah data yang ada di tabel atau partisi tujuan akan dihapus sebelum operasi penulisan. Nilai true berarti data dihapus.
                "datasource":"odps_datasource",// Nama sumber data MaxCompute.
                "column":[// Empat kolom tujuan sesuai dengan rowkey, family:qualifier, timestamp, dan value.
                    "rowkey",
                    "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,// Menonaktifkan Pembatasan kecepatan.
            "concurrent":2// Jumlah maksimum thread konkuren.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}
Catatan

Tabel MaxCompute tujuan harus dibuat terlebih dahulu. Berikut adalah contoh pernyataan pembuatan tabel:CREATE TABLE IF NOT EXISTS hbase_multiversion_target (row_key STRING, cf STRING, timestamp_col STRING, value STRING);

Parameter HBase Reader

Parameter

Deskripsi

Wajib

Default

haveKerberos

Jika haveKerberos diatur ke true, kluster HBase memerlukan Autentikasi Kerberos.

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

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

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

Tidak

false

hbaseConfig

Informasi konfigurasi yang diperlukan untuk menghubungkan ke kluster HBase. Informasi ini harus dalam format JSON. Konfigurasi yang wajib adalah hbase.zookeeper.quorum, yang menentukan alamat koneksi ZooKeeper untuk HBase. Anda juga dapat menambahkan konfigurasi klien HBase lainnya, seperti cache scan dan ukuran batch, untuk mengoptimalkan interaksi dengan server.

Catatan

Jika Anda menggunakan database ApsaraDB for HBase, Anda harus terhubung menggunakan Titik Akhir Jaringan Internal.

Ya

Tidak ada

mode

Mode baca untuk HBase mendukung mode normal dan mode multiVersionFixedColumn.

Ya

Tidak ada

table

Nama tabel HBase tempat data dibaca. Nama ini case-sensitive.

Ya

Tidak ada

encoding

Pengkodean karakter, seperti UTF-8 atau GBK, untuk mengonversi data biner HBase byte[] menjadi String.

Tidak

utf-8

column

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

  • Dalam mode normal:

    name menentukan kolom HBase yang akan dibaca. Kecuali untuk rowkey, harus dalam format Column Family:Column Qualifier. type menentukan tipe data sumber, dan format menentukan format untuk tipe tanggal. value menentukan nilai konstan. Jika Anda menentukan parameter ini, data tidak dibaca dari HBase. Sebaliknya, kolom yang sesuai akan dihasilkan secara otomatis berdasarkan nilai yang ditentukan. Format konfigurasinya sebagai berikut:

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

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

  • Mode multiVersionFixedColumn

    Parameter name menentukan kolom HBase yang akan dibaca, yang harus dalam format Column Family:Column Qualifier, kecuali untuk rowkey. Parameter type menentukan tipe data sumber, dan format menentukan format untuk tipe tanggal. Kolom konstan tidak didukung dalam mode multiVersionFixedColumn. Format konfigurasinya sebagai berikut:

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

Ya

Tidak ada

maxVersion

Menentukan jumlah versi yang dibaca dalam mode multiVersionFixedColumn. Nilainya harus -1 atau integer lebih besar dari 1. Nilai -1 berarti semua versi dibaca.

Wajib dalam mode multiVersionFixedColumn.

Tidak ada

range

Rentang rowkey tempat HBase Reader membaca data.

  • startRowkey: Menentukan rowkey awal.

  • endRowkey: Menentukan rowkey akhir.

  • isBinaryRowkey: Menentukan cara mengonversi startRowkey dan endRowkey menjadi array byte[]. Nilai default adalah false. Jika true, metode Bytes.toBytesBinary(rowkey) dipanggil untuk melakukan konversi. Jika false, metode Bytes.toBytes(rowkey) dipanggil. Format konfigurasinya sebagai berikut:

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

Tidak

Tidak ada

scanCacheSize

Jumlah baris yang diambil klien HBase dari server per panggilan prosedur remote (RPC).

Tidak

256

scanBatchSize

Jumlah kolom yang diambil klien HBase dari server per panggilan prosedur remote (RPC). Jika Anda mengatur parameter ini ke -1, semua kolom dikembalikan.

Catatan

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

Tidak

100

Contoh 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 untuk menulis data ke HBase.
                "walFlag":"false",// Jika diatur ke false, fitur Write-Ahead Log (WAL) dinonaktifkan.
                "hbaseVersion":"094x",// Versi HBase.
                "rowkeyColumn":[// Mendefinisikan kolom sumber untuk rowkey HBase.
                    {
                        "index":"0",// Indeks kolom sumber.
                        "type":"string"// Tipe data.
                    },
                    {
                        "index":"-1",// Gunakan -1 untuk nilai konstan.
                        "type":"string",
                        "value":"_"
                    }
                ],
                "nullMode":"skip",// Menentukan cara menangani nilai null.
                "column":[// Kolom HBase tempat data ditulis.
                    {
                        "name":"columnFamilyName1:columnName1",// Nama kolom.
                        "index":"0",// Indeks kolom sumber.
                        "type":"string"// Tipe data.
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "index":"1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "index":"2",
                        "type":"string"
                    }
                ],
                "encoding":"UTF-8",// Format encoding.
                "table":"YOUR_TABLE_NAME",// 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":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan error yang diizinkan.
        },
        "speed":{
            "throttle":true,// Menentukan apakah Pembatasan kecepatan diaktifkan. Jika diatur ke true, data ditransfer pada laju yang ditentukan oleh `mbps`. Jika diatur ke false, parameter `mbps` diabaikan dan tidak ada batas laju.
            "concurrent":1, // Jumlah maksimum thread konkuren.
            "mbps":"12"// Laju transfer maksimum. Satuan: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter HBase Writer

Parameter

Deskripsi

Wajib

Default

haveKerberos

Nilai true untuk haveKerberos menunjukkan bahwa kluster HBase memerlukan Autentikasi Kerberos.

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

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

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

Tidak

false

hbaseConfig

Informasi konfigurasi yang diperlukan untuk menghubungkan ke kluster HBase. Informasi ini harus dalam format JSON. Parameter yang wajib adalah hbase.zookeeper.quorum, yang menentukan alamat koneksi ZK untuk HBase. Anda juga dapat menambahkan konfigurasi klien HBase lainnya, seperti pengaturan cache scan dan batch, untuk mengoptimalkan interaksi dengan server.

Catatan

Jika Anda menggunakan database ApsaraDB for HBase, Anda harus terhubung menggunakan Titik Akhir Jaringan Internal.

Ya

Tidak ada

mode

Mode tulis untuk HBase saat ini terbatas pada mode normal. Dukungan untuk mode kolom dinamis direncanakan di masa depan.

Ya

Tidak ada

table

Nama tabel HBase tujuan. Nama ini case-sensitive.

Ya

Tidak ada

encoding

Metode encoding, UTF-8 atau GBK, yang digunakan untuk mengonversi STRING menjadi HBase byte[].

Tidak

utf-8

column

Kolom HBase tempat data ditulis:

  • index: Menentukan indeks kolom yang sesuai di Reader. Indeks dimulai dari 0.

  • name: Menentukan kolom di tabel HBase. Formatnya harus Column Family:Column Qualifier.

  • type: Menentukan tipe data yang akan ditulis, yang digunakan untuk konversi array byte HBase.

Ya

Tidak ada

rowkeyColumn

Mendefinisikan kolom sumber yang digunakan untuk membuat rowkey HBase.

  • index: Menentukan indeks berbasis 0 dari kolom yang sesuai di Reader. Untuk nilai konstan, indeksnya adalah -1.

  • type: Menentukan tipe data yang akan ditulis, yang digunakan untuk mengonversi byte[] HBase.

  • value: Nilai konstan, sering digunakan sebagai pemisah untuk beberapa bidang. HBase Writer menggabungkan semua kolom yang ditentukan dalam rowkeyColumn sesuai urutan yang dikonfigurasi untuk menghasilkan rowkey data yang ditulis ke HBase. Rowkey tidak boleh terdiri sepenuhnya dari nilai konstan.

Kode berikut menunjukkan formatnya.

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

Ya

Tidak ada

versionColumn

Timestamp untuk menulis data ke HBase. Anda dapat menggunakan waktu saat ini, kolom waktu tertentu, atau waktu yang ditentukan. Jika Anda tidak mengonfigurasi parameter ini, waktu saat ini digunakan.

  • index: Menentukan indeks berbasis 0 dari kolom yang sesuai di Reader. Nilainya harus dapat dikonversi ke tipe data LONG.

  • type: Jika nilainya bertipe Date, sistem akan mencoba menguraikannya menggunakan yyyy-MM-dd HH:mm:ss dan yyyy-MM-dd HH:mm:ss SSS. Jika waktu tertentu ditentukan, indeksnya adalah -1.

  • value: Nilai waktu yang ditentukan, bertipe LONG.

Kode berikut menunjukkan formatnya.

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

Tidak

Tidak ada

nullMode

Menentukan cara menangani nilai null dari sumber saat menulis ke HBase:

  • skip: Tidak menulis kolom ke HBase.

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

Tidak

skip

walFlag

Write-Ahead Log (WAL) menjamin ketahanan data. Sebelum menulis ke MemStore, klien HBase terlebih dahulu menulis operasi seperti Put dan Delete ke WAL. Klien hanya diberi tahu bahwa penulisan berhasil setelah entri WAL selesai.

Jika penulisan WAL gagal, operasi tersebut gagal. Untuk meningkatkan performa penulisan dengan mengorbankan jaminan ketahanan yang lebih rendah, 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 pengaturan autoflush.

Pengaturan autoflush dinonaktifkan secara default.

  • true: Klien HBase melakukan pembaruan untuk setiap operasi put selama penulisan.

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

Tidak

8M

fileSystemUsername

Jika Anda mengalami masalah izin Ranger selama task sinkronisasi, Anda dapat mengubah task dari mode wizard ke Mode Skrip. Kemudian, konfigurasikan parameter fileSystemUsername dengan pengguna yang memiliki izin yang diperlukan. DataWorks kemudian akan mengakses HBase sebagai pengguna yang ditentukan.

Tidak

Tidak ada

Contoh skrip HBase20xsql Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"hbase20xsql",// Nama plugin.
            "parameter":{
                "queryServerAddress": "http://127.0.0.1:8765",  // Titik akhir Phoenix QueryServer.
                "serialization": "PROTOBUF",  // Format serialisasi QueryServer.
                "table": "TEST",    // Nama tabel yang akan dibaca.
                "column": ["ID", "NAME"],   // Nama kolom yang akan dibaca.
                "splitKey": "ID"    // Kunci pemisahan, yang harus merupakan kunci primer 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,// Menentukan apakah Pembatasan kecepatan diaktifkan. Jika diatur ke true, data ditransfer pada laju yang ditentukan oleh `mbps`. Jika diatur ke false, parameter `mbps` diabaikan dan tidak ada batas laju.
            "concurrent":1,// Jumlah maksimum thread konkuren.
            "mbps":"12"// Laju transfer maksimum. Satuan: MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter HBase20xsql Reader

Parameter

Deskripsi

Wajib

Default

queryServerAddress

Plugin HBase20xsql Reader terhubung ke Phoenix QueryServer menggunakan thin client Phoenix. Oleh karena itu, Anda harus memasukkan alamat QueryServer. Jika Anda menggunakan HBase Enhanced Edition (Lindorm) dan perlu melewatkan parameter user dan password, Anda dapat menambahkan properti opsional ini ke nilai queryServerAddress. Formatnya: http://127.0.0.1:8765;user=root;password=root.

Ya

Tidak ada

serialization

Protokol serialisasi yang digunakan oleh QueryServer.

Tidak

PROTOBUF

table

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

Ya

Tidak ada

schema

Skema tempat tabel berada.

Tidak

Tidak ada

column

Kumpulan nama kolom di tabel yang dikonfigurasi yang ingin Anda sinkronkan. Gunakan array JSON untuk menentukan informasi kolom. Nilai kosong berarti semua kolom dibaca.

Tidak

Semua kolom

splitKey

Tabel di-shard saat dibaca. Jika Anda menentukan parameter splitKey, sistem akan menggunakan bidang yang sesuai dengan splitKey untuk melakukan sharding data. Hal ini memungkinkan Sinkronisasi Data untuk menjalankan task konkuren dan meningkatkan performa sinkronisasi. Anda dapat memilih dari dua metode sharding berbeda. Jika parameter splitPoint kosong, sistem secara default menggunakan sharding otomatis berdasarkan Metode 1.

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

    Catatan

    Hanya kolom bertipe integer dan string yang didukung sebagai kunci shard.

  • Metode 2: Anda dapat melakukan sharding data berdasarkan splitPoint yang dikonfigurasi. Kemudian, sinkronkan data sesuai dengan concurrent yang ditentukan.

Ya

Tidak ada

splitPoints

Karena sharding berdasarkan nilai maksimum dan minimum kolom sharding tidak dapat mencegah hot spot data, kami menyarankan Anda menentukan titik shard berdasarkan startkey dan endkey dari Region untuk memastikan setiap kueri dipetakan ke satu Region saja.

Tidak

Tidak ada

where

Kondisi filter untuk kueri tabel. HBase20xsql Reader membuat kueri SQL berdasarkan column, table, dan kondisi where yang ditentukan untuk mengekstrak data.

Tidak

Tidak ada

querySql

Dalam beberapa skenario bisnis, parameter where tidak cukup untuk menggambarkan kondisi filter. Anda dapat menggunakan parameter ini untuk mendefinisikan kueri SQL kustom. Jika Anda mengonfigurasi parameter ini, HBase20xsql Reader akan menggunakan kueri yang ditentukan untuk memfilter data dan mengabaikan parameter column, table, where, dan splitKey. Satu-satunya pengecualian adalah parameter queryserverAddress yang tetap harus diatur.

Tidak

Tidak ada

Contoh skrip HBase11xsql Writer

{
  "type": "job",
  "version": "1.0",
  "configuration": {
    "setting": {
      "errorLimit": {
        "record": "0" // Jumlah maksimum catatan error yang diizinkan.
      },
      "speed": {
            "throttle":true, // Menentukan apakah Pembatasan kecepatan diaktifkan.
            "concurrent":1, // Jumlah maksimum thread konkuren.
            "mbps":"1" // Laju transfer maksimum. Satuan: MB/s.
      }
    },
    "reader": {
      "plugin": "odps",
      "parameter": {
        "datasource": "your_odps_datasource_name",
        "table": "your_source_table_name",
        "column": [],
        "partition": ""
      }
    },
    "writer": {
        "plugin": "hbase11xsql",
        "parameter": {
          "table": "PHOENIX_TABLE_NAME", // Nama tabel Phoenix tujuan.
          "hbaseConfig": {
            "hbase.zookeeper.quorum": "zookeeper-ip1,zookeeper-ip2", // Titik akhir ZooKeeper kluster HBase tujuan.
            "zookeeper.znode.parent": "/hbase" // znode kluster HBase tujuan.
          },
          "column": [
            "ID",
            "NAME" // Daftar nama kolom tujuan.
          ],
          "batchSize": 256, // Jumlah maksimum baris untuk penulisan batch.
          "nullMode": "skip" // Menentukan cara menangani nilai null.
        }
    }
  }
}

Parameter HBase11xsql Writer

Parameter

Deskripsi

Wajib

Default

plugin

Nama plugin. Nilainya harus hbase11xsql.

Ya

Tidak ada

table

Nama tabel tempat data diimpor. Nama ini case-sensitive. Nama tabel Phoenix biasanya dalam huruf kapital.

Ya

Tidak ada

column

Nama kolom. Nama ini case-sensitive. Nama kolom Phoenix biasanya dalam huruf kapital.

Catatan
  • Urutan kolom harus sesuai dengan urutan kolom dari reader.

  • Anda tidak perlu menentukan tipe data, karena metadata kolom diambil secara otomatis dari Phoenix.

Ya

Tidak ada

hbaseConfig

Konfigurasi untuk kluster HBase tujuan. Parameter hbase.zookeeper.quorum wajib.

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

  • Parameter zookeeper.znode.parent bersifat opsional. Nilai defaultnya adalah /hbase.

Ya

Tidak ada

batchSize

Jumlah maksimum baris untuk penulisan batch.

Tidak

256

nullMode

Menentukan cara menangani nilai kolom null dari sumber:

  • skip: Tidak memasukkan kolom. Jika kolom sudah ada, kolom tersebut dihapus.

  • empty: Memasukkan nilai kosong. Nilainya adalah 0 untuk tipe numerik dan string kosong untuk tipe varchar.

Tidak

skip