全部产品
Search
文档中心

DataWorks:Sumber data HBase

更新时间:Feb 07, 2026

Sumber data HBase mendukung pembacaan dari dan penulisan ke HBase. Topik ini menjelaskan kemampuan sinkronisasi sumber data HBase di DataWorks.

Versi yang didukung

Plugin HBase tersedia dalam dua jenis: plugin HBase standar dan plugin HBase{xx}xsql. Plugin HBase{xx}xsql memerlukan HBase dan Phoenix.

  1. Plugin HBase:

    Plugin ini mendukung HBase0.94.x, HBase1.1.x, dan HBase2.x. Plugin ini mendukung mode wizard dan mode skrip. Gunakan parameter hbaseVersion untuk menentukan versi.

    • Jika Anda menggunakan HBase0.94.x, atur hbaseVersion ke 094x untuk plugin Reader maupun Writer.

      "reader": {
              "hbaseVersion": "094x"
          }
      "writer": {
              "hbaseVersion": "094x"
          }
    • Jika Anda menggunakan HBase1.1.x atau HBase2.x, atur hbaseVersion ke 11x untuk plugin Reader maupun 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 HBase2.x dan Phoenix5.x. Hanya mendukung mode skrip.

      Plugin HBase11xsql: Mendukung HBase1.1.x dan Phoenix5.x. Hanya mendukung mode skrip.

    2. Plugin Writer HBase{xx}xsql memungkinkan Anda mengimpor data secara massal ke tabel SQL (Phoenix) di HBase. Phoenix menerapkan encoding data pada rowkey. Menulis data langsung melalui API HBase memerlukan konversi data manual, proses yang kompleks dan rentan kesalahan. Plugin Writer HBase{xx}xsql menyederhanakan proses ini, memberikan cara langsung untuk mengimpor data ke tabel SQL.

      Catatan

      Plugin ini menggunakan driver JDBC Phoenix untuk mengeksekusi pernyataan UPSERT dan menulis data ke tabel secara batch. Karena beroperasi melalui antarmuka tingkat tinggi ini, plugin juga memperbarui tabel indeks terkait secara sinkron.

Batasan

HBase reader

HBase20xsql reader

HBase11xsql writer

  • Anda hanya dapat membagi tabel berdasarkan satu kolom: kunci primernya.

  • Saat membagi tabel secara merata berdasarkan konkurensi tugas, kolom pemisah harus bertipe integer atau string.

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

  • Karena plugin ini membaca data secara eksklusif melalui Phoenix QueryServer, Anda harus mengaktifkan layanan QueryServer di Phoenix.

  • Anda hanya dapat menggunakan writer ini dengan kelompok sumber daya arsitektur tanpa server untuk Data Integration (disarankan) dan kelompok sumber daya eksklusif untuk Data Integration.

  • Writer tidak mendukung pengimporan data dengan timestamp.

  • Writer hanya mendukung tabel yang dibuat dengan Phoenix. Writer tidak mendukung tabel HBase native.

  • Urutan kolom pada writer harus sesuai dengan urutan pada reader. Urutan kolom reader menentukan urutan kolom pada output, sedangkan urutan kolom writer menentukan urutan kolom yang diharapkan pada input. Contohnya:

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

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

    Dalam skenario ini, data dari kolom c1 reader ditulis ke kolom x1 writer. Jika urutan kolom writer adalah x1, x2, x4, x3, maka data dari kolom c3 reader ditulis ke x4, dan data dari c4 ditulis ke x3.

  • Writer mendukung pengimporan data ke tabel berindeks dan secara otomatis memperbarui semua indeks terkait.

Fitur yang didukung

HBase Reader

HBase Reader mendukung mode normal dan mode multiVersionFixedColumn.

  • Mode normal: Memperlakukan tabel HBase sebagai tabel dua dimensi standar dan mengambil versi terbaru dari data.

    hbase(main):017:0> scan 'users'
    ROW                                   COLUMN+CELL
    lisi                                 column=address:city, timestamp=1457101972764, value=beijing
    lisi                                 column=address:contry, timestamp=1457102773908, value=china
    lisi                                 column=address:province, timestamp=1457101972736, value=beijing
    lisi                                 column=info:age, timestamp=1457101972548, value=27
    lisi                                 column=info:birthday, timestamp=1457101972604, value=1987-06-17
    lisi                                 column=info:company, timestamp=1457101972653, value=baidu
    xiaoming                             column=address:city, timestamp=1457082196082, value=hangzhou
    xiaoming                             column=address:contry, timestamp=1457082195729, value=china
    xiaoming                             column=address:province, timestamp=1457082195773, value=zhejiang
    xiaoming                             column=info:age, timestamp=1457082218735, value=29
    xiaoming                             column=info:birthday, timestamp=1457082186830, value=1987-06-17
    xiaoming                             column=info:company, timestamp=1457082189826, value=alibaba
    2 row(s) in 0.0580 seconds

    Tabel berikut menampilkan outputnya.

    rowKey

    address:city

    address:contry

    address:province

    info:age

    info:birthday

    info:company

    lisi

    beijing

    china

    beijing

    27

    1987-06-17

    baidu

    xiaoming

    hangzhou

    china

    zhejiang

    29

    1987-06-17

    alibaba

  • Mode multiVersionFixedColumn: Memperlakukan tabel HBase sebagai tabel vertikal. Setiap catatan terdiri dari empat kolom: rowKey, family:qualifier, timestamp, dan value. Anda harus menentukan kolom yang akan dibaca. Mode ini memperlakukan setiap nilai sel sebagai catatan terpisah. Jika sebuah sel memiliki beberapa versi, mode ini menghasilkan catatan terpisah untuk setiap versi.

    hbase(main):018:0> scan 'users',{VERSIONS=>5}
    ROW                                   COLUMN+CELL
    lisi                                 column=address:city, timestamp=1457101972764, value=beijing
    lisi                                 column=address:contry, timestamp=1457102773908, value=china
    lisi                                 column=address:province, timestamp=1457101972736, value=beijing
    lisi                                 column=info:age, timestamp=1457101972548, value=27
    lisi                                 column=info:birthday, timestamp=1457101972604, value=1987-06-17
    lisi                                 column=info:company, timestamp=1457101972653, value=baidu
    xiaoming                             column=address:city, timestamp=1457082196082, value=hangzhou
    xiaoming                             column=address:contry, timestamp=1457082195729, value=china
    xiaoming                             column=address:province, timestamp=1457082195773, value=zhejiang
    xiaoming                             column=info:age, timestamp=1457082218735, value=29
    xiaoming                             column=info:age, timestamp=1457082178630, value=24
    xiaoming                             column=info:birthday, timestamp=1457082186830, value=1987-06-17
    xiaoming                             column=info:company, timestamp=1457082189826, value=alibaba
    2 row(s) in 0.0260 seconds

    Tabel berikut menampilkan outputnya.

    rowKey

    column:qualifier

    timestamp

    Value

    lisi

    address:city

    1457101972764

    beijing

    lisi

    address:contry

    1457102773908

    china

    lisi

    address:province

    1457101972736

    beijing

    lisi

    info:age

    1457101972548

    27

    lisi

    info:birthday

    1457101972604

    1987-06-17

    lisi

    info:company

    1457101972653

    baidu

    xiaoming

    address:city

    1457082196082

    hangzhou

    xiaoming

    address:contry

    1457082195729

    china

    xiaoming

    address:province

    1457082195773

    zhejiang

    xiaoming

    info:age

    1457082218735

    29

    xiaoming

    info:age

    1457082178630

    24

    xiaoming

    info:birthday

    1457082186830

    1987-06-17

    xiaoming

    info:company

    1457082189826

    alibaba

HBase Writer

  • HBase Writer dapat menghasilkan rowKey dengan menggabungkan beberapa kolom dari sumber.

  • HBase Writer dapat mengatur version (timestamp) data dengan cara berikut:

    • Menggunakan waktu saat ini.

    • Menggunakan nilai dari kolom sumber.

    • Menggunakan waktu yang ditentukan pengguna.

Tipe bidang yang didukung

Baca batch

  • Tabel berikut mencantumkan pemetaan tipe data untuk HBase Reader.

    Tipe

    Jenis Kolom Data Integration

    Tipe data 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, tetapi tidak semua, tipe data Phoenix. Pastikan tipe data Anda didukung sebelum digunakan.

  • Tabel berikut mencantumkan pemetaan tipe yang digunakan oleh HBase20xsql Reader untuk tipe data Phoenix.

    Tipe internal DataX

    Tipe data Phoenix

    long

    INTEGER, TINYINT, SMALLINT, dan BIGINT

    double

    FLOAT, DECIMAL, dan DOUBLE

    string

    CHAR dan VARCHAR

    date

    DATE, TIME, dan TIMESTAMP

    bytes

    BINARY dan VARBINARY

    boolean

    BOOLEAN

Tulis batch

Tabel berikut mencantumkan pemetaan tipe data untuk HBase Writer.

Catatan
  • Pastikan konfigurasi column sesuai dengan tipe kolom yang sesuai di tabel HBase.

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

Tipe

Tipe data database

Integer

INT, LONG, dan SHORT

Floating-point

FLOAT dan DOUBLE

Boolean

BOOLEAN

String

STRING

Pertimbangan

Jika Anda menerima pesan error "tried to access method com.google.common.base.Stopwatch" saat menguji konektivitas, tambahkan properti hbaseVersion ke konfigurasi Data Source dan tentukan 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.

Tugas sinkronisasi data

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

Tugas sinkronisasi offline single-table

  • Untuk petunjuk, lihat Konfigurasikan tugas di Antarmuka tanpa kode dan Konfigurasikan tugas di editor kode.

    Secara default, Mode Wizard tidak menampilkan bagian Pemetaan Bidang karena HBase merupakan sumber data tanpa skema. Anda harus mengonfigurasi pemetaan bidang secara manual:

    • Saat HBase adalah sumber data, konfigurasikan Source Field dalam format berikut: data_type|column_family:column_name.

    • Saat HBase adalah tujuan data, konfigurasikan Destination Field dan rowkey. Untuk Destination Field, gunakan format source_field_index|data_type|column_family:column_name. Untuk rowkey, gunakan format source_primary_key_index|data_type.

    Catatan

    Setiap bidang harus berada di baris terpisah.

  • Untuk daftar lengkap parameter dan contoh skrip dalam Mode Skrip, lihat Lampiran: Demo skrip dan parameter.

FAQ

  • Q: Berapa pengaturan konkurensi yang disarankan? Apakah meningkatkannya membantu jika impor lambat?

    A: Ukuran Heap JVM default untuk proses Impor Data adalah 2 GB. Konkurensi (jumlah saluran) diimplementasikan menggunakan multi-threading. Namun, membuat terlalu banyak thread tidak selalu meningkatkan kecepatan impor dan dapat menurunkan performa akibat Garbage Collection (GC) yang sering terjadi. Sebagai praktik terbaik, kami menyarankan mengatur konkurensi (jumlah saluran) antara 5 hingga 10.

  • Q: Berapa pengaturan batchSize yang disarankan?

    A: Nilai defaultnya adalah 256, tetapi Anda harus menghitung batchSize optimal berdasarkan ukuran rata-rata baris Anda. Sebagai praktik terbaik, targetkan ukuran data total 2 MB hingga 4 MB per batch. Bagi ukuran target ini dengan ukuran rata-rata baris Anda untuk menentukan batchSize yang sesuai.

Lampiran: Demo skrip dan 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 Konfigurasikan tugas di editor kode. Informasi berikut menjelaskan parameter yang harus Anda konfigurasi untuk sumber data saat mengonfigurasi tugas sinkronisasi batch menggunakan editor kode.

Demo 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 dari server per RPC.
                "scanBatchSize":"100",// Jumlah kolom yang dibaca klien dari server per RPC.
                "hbaseVersion":"094x/11x",// Versi HBase.
                "column":[// Kolom yang akan dibaca.
                    {
                        "name":"rowkey",// Nama kolom.
                        "type":"string"// Tipe data.
                    },
                    {
                        "name":"columnFamilyName1:columnName1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "format":"yyyy-MM-dd",
                        "type":"date"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "type":"long"
                    }
                ],
                "range":{// Rentang rowkey untuk HBase Reader.
                    "endRowkey":"",// Rowkey akhir.
                    "isBinaryRowkey":true,// Menentukan cara mengonversi startRowkey dan endRowkey ke array byte. Nilai default adalah false.
                    "startRowkey":""// Rowkey awal.
                },
                "maxVersion":"",// Jumlah versi yang dibaca dalam mode multi-versi.
                "encoding":"UTF-8",// Format encoding.
                "table":"",// 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":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Jumlah maksimum catatan error yang diizinkan.
        },
        "speed":{
            "throttle":true,// Mengaktifkan Pembatasan kecepatan. Jika true, Pembatasan kecepatan diaktifkan berdasarkan nilai mbps. Jika false, parameter mbps diabaikan.
            "concurrent":1,// Jumlah tugas konkuren untuk pekerjaan.
            "mbps":"12"// Laju pembatasan. Dalam contoh ini, 1 mbps sama dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter HBase Reader

Parameter

Deskripsi

Wajib

Default

haveKerberos

Menentukan apakah kluster HBase memerlukan autentikasi Kerberos. Jika diatur ke true, autentikasi Kerberos diaktifkan.

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

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

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

Tidak

false

hbaseConfig

Konfigurasi koneksi untuk kluster HBase, dalam format JSON. Properti hbase.zookeeper.quorum, yang menentukan alamat ZooKeeper (ZK) kluster HBase, wajib diisi. Anda dapat menambahkan konfigurasi klien HBase lainnya, seperti pengaturan cache dan batch, untuk mengoptimalkan interaksi dengan server.

Catatan

Jika Anda terhubung ke database ApsaraDB for HBase, gunakan alamat privatnya.

Ya

Tidak ada

mode

Mode untuk membaca data dari HBase. Nilai yang valid: normal dan multiVersionFixedColumn.

Ya

Tidak ada

table

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

Ya

Tidak ada

encoding

Format encoding yang digunakan untuk mengonversi array biner HBase byte[] menjadi string. Nilai yang valid: UTF-8 dan GBK.

Tidak

UTF-8

column

Kolom yang akan dibaca dari HBase. Parameter ini wajib diisi baik dalam mode normal maupun multiVersionFixedColumn.

  • Dalam mode normal:

    Properti name menentukan kolom HBase yang akan dibaca. Kecuali untuk rowkey, formatnya harus <Column Family>:<Column name>. Properti type menentukan tipe data sumber. Properti format menentukan pola untuk tipe tanggal. Properti value mendefinisikan kolom konstan. Plugin juga dapat menghasilkan nilai konstan untuk kolom alih-alih membacanya dari HBase. Konfigurasinya sebagai berikut:

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

    Dalam mode normal, Anda harus menentukan properti type untuk setiap kolom. Anda juga harus menyertakan salah satu properti name atau value.

  • Dalam mode multiVersionFixedColumn:

    Properti name menentukan kolom HBase yang akan dibaca. Kecuali untuk rowkey, formatnya harus <Column Family>:<Column name>. Properti type menentukan tipe data sumber, dan properti format menentukan pola untuk tipe tanggal. Kolom konstan tidak didukung dalam mode multiVersionFixedColumn. Konfigurasinya sebagai berikut:

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

Ya

Tidak ada

maxVersion

Jumlah versi yang dibaca HBase Reader dalam mode multi-versi. Atur ke -1 untuk membaca semua versi, atau ke bilangan bulat lebih besar dari 1.

Wajib dalam mode multiVersionFixedColumn

Tidak ada

range

Menentukan rentang rowkey untuk HBase Reader.

  • startRowkey: Awal rentang rowkey.

  • endRowkey: Akhir rentang rowkey.

  • isBinaryRowkey: Menentukan cara mengonversi startRowkey dan endRowkey ke array byte. Nilai default adalah false. Jika diatur ke true, plugin menggunakan metode Bytes.toBytesBinary(rowkey). Jika diatur ke false, plugin menggunakan metode Bytes.toBytes(rowkey). Konfigurasinya sebagai berikut:

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

Tidak

Tidak ada

scanCacheSize

Jumlah baris yang diambil HBase Reader dari server per RPC.

Tidak

256

scanBatchSize

Jumlah kolom yang diambil HBase Reader dari server per RPC. Nilai -1 menunjukkan bahwa semua kolom dikembalikan.

Catatan

Untuk menghindari potensi masalah kualitas data, atur scanBatchSize ke nilai yang lebih besar dari jumlah kolom aktual.

Tidak

100

Demo 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",// Menentukan apakah akan menulis ke Write-Ahead Log (WAL). Nilai false menonaktifkannya.
                "hbaseVersion":"094x",// Versi HBase.
                "rowkeyColumn":[// Kolom yang digunakan untuk rowkey.
                    {
                        "index":"0",// Nomor seri.
                        "type":"string"// Tipe data.
                    },
                    {
                        "index":"-1",
                        "type":"string",
                        "value":"_"
                    }
                ],
                "nullMode":"skip",// Menentukan cara menangani nilai null.
                "column":[// Kolom HBase yang akan ditulis.
                    {
                        "name":"columnFamilyName1:columnName1",// Nama kolom.
                        "index":"0",// Nomor indeks.
                        "type":"string"// Tipe data.
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "index":"1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "index":"2",
                        "type":"string"
                    }
                ],
                "encoding":"utf-8",// Format encoding.
                "table":"",// 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,// Mengaktifkan Pembatasan kecepatan. Jika true, Pembatasan kecepatan diaktifkan berdasarkan nilai mbps. Jika false, parameter mbps diabaikan.
            "concurrent":1, // Jumlah tugas konkuren untuk pekerjaan.
            "mbps":"12"// Laju pembatasan.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter HBase Writer

Parameter

Deskripsi

Wajib

Default

haveKerberos

Menentukan apakah kluster HBase memerlukan autentikasi Kerberos. Jika diatur ke true, autentikasi Kerberos diaktifkan.

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

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

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

Tidak

false

hbaseConfig

Konfigurasi koneksi untuk kluster HBase, dalam format JSON. Properti hbase.zookeeper.quorum, yang menentukan alamat ZooKeeper (ZK) kluster HBase, wajib diisi. Anda dapat menambahkan konfigurasi klien HBase lainnya, seperti pengaturan cache dan batch, untuk mengoptimalkan interaksi dengan server.

Catatan

Jika Anda terhubung ke database ApsaraDB for HBase, gunakan alamat privatnya.

Ya

Tidak ada

mode

Mode untuk menulis data ke HBase. Saat ini, hanya mode normal yang didukung.

Ya

Tidak ada

table

Nama tabel HBase target. Parameter ini case-sensitive.

Ya

Tidak ada

encoding

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

Tidak

UTF-8

column

Kolom HBase yang akan ditulis:

  • index: Indeks kolom yang sesuai dari Reader, dimulai dari 0.

  • name: Nama kolom di tabel HBase. Formatnya harus <Column Family>:<Column name>.

  • type: Tipe data yang akan ditulis, digunakan untuk mengonversi data sumber menjadi array byte HBase.

Ya

Tidak ada

rowkeyColumn

Menentukan kolom yang digunakan untuk membuat rowkey saat menulis data ke HBase:

  • index: Indeks kolom yang sesuai dari Reader, dimulai dari 0. Untuk nilai konstan, atur indeks ke -1.

  • type: Tipe data yang akan ditulis, digunakan untuk mengonversi data sumber menjadi array byte HBase.

  • value: Mendefinisikan nilai konstan, sering digunakan sebagai pemisah saat menggabungkan beberapa kolom. HBase Writer menggabungkan semua kolom dalam array rowkeyColumn sesuai urutan yang ditentukan untuk membuat rowkey akhir. Tidak semua kolom dalam array boleh berupa konstan.

Konfigurasinya sebagai berikut:

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

Ya

Tidak ada

versionColumn

Menentukan Timestamp untuk data yang ditulis ke HBase. Anda dapat menggunakan waktu sistem saat ini, nilai dari kolom sumber, atau nilai tetap. Jika parameter ini tidak dikonfigurasi, waktu saat ini digunakan secara default.

  • index: Indeks kolom waktu yang sesuai dari Reader, dimulai dari 0. Nilainya harus dapat dikonversi ke tipe LONG.

  • type: Jika tipe sumber adalah Date, sistem mencoba menguraikannya menggunakan format yyyy-MM-dd HH:mm:ss dan yyyy-MM-dd HH:mm:ss SSS. Untuk waktu tetap, atur indeks ke -1.

  • value: Nilai waktu tetap bertipe LONG.

Konfigurasinya sebagai berikut:

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

Tidak

Tidak ada

nullMode

Menentukan cara menangani nilai null dari data sumber:

  • skip: Tidak menulis kolom ke HBase.

  • empty: Menulis array byte kosong (HConstants.EMPTY_BYTE_ARRAY, yaitu new byte [0]).

Tidak

skip

walFlag

Saat klien mengirim operasi Put atau Delete, data pertama-tama ditulis ke Write-Ahead Log (WAL) sebelum disimpan di MemStore. Proses ini memastikan ketahanan data.

Mengatur parameter ini ke false menonaktifkan penulisan ke WAL, yang dapat meningkatkan performa tulis.

Tidak

false

writeBufferSize

Ukuran buffer tulis klien HBase dalam byte. Buffer ini bekerja dengan pengaturan autoflush klien, yang secara default dinonaktifkan.

autoflush (dinonaktifkan secara default):

  • true: Klien HBase mengirim pembaruan untuk setiap operasi put.

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

Tidak

8 MB

fileSystemUsername

Jika tugas sinkronisasi data gagal karena masalah izin Ranger, beralihlah ke Mode Skrip dan atur parameter ini ke username yang memiliki izin akses HBase yang diperlukan. DataWorks kemudian menggunakan username ini untuk koneksi.

Tidak

Tidak ada

Demo skrip HBase20xsql Reader

{
    "type":"job",
    "version":"2.0",// Nomor versi.
    "steps":[
        {
            "stepType":"hbase20xsql",// Nama plugin.
            "parameter":{
                "queryServerAddress": "http://127.0.0.1:8765",  // Alamat Phoenix QueryServer.
                "serialization": "PROTOBUF",  // Format serialisasi QueryServer.
                "table": "TEST",    // Tabel yang akan dibaca.
                "column": ["ID", "NAME"],   // Kolom yang akan dibaca.
                "splitKey": "ID"    // Kolom pemisah, 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,// Mengaktifkan Pembatasan kecepatan. Jika true, Pembatasan kecepatan diaktifkan berdasarkan nilai mbps. Jika false, parameter mbps diabaikan.
            "concurrent":1,// Jumlah tugas konkuren untuk pekerjaan.
            "mbps":"12"// Laju pembatasan. Dalam contoh ini, 1 mbps sama dengan 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Parameter HBase20xsql Reader

Parameter

Deskripsi

Wajib

Default

queryServerAddress

HBase20xsql Reader menggunakan klien ringan Phoenix untuk terhubung ke Phoenix QueryServer. Tentukan alamat QueryServer di sini. Untuk pengguna ApsaraDB for HBase edisi enhanced (Lindorm), Anda dapat meneruskan parameter user dan password sebagai atribut opsional dalam string queryServerAddress. Format: 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. Parameter ini case-sensitive.

Ya

Tidak ada

schema

Skema yang berisi tabel.

Tidak

Tidak ada

column

Array JSON yang berisi nama kolom yang akan disinkronkan. Jika dibiarkan kosong, semua kolom akan dibaca.

Tidak

Semua kolom

splitKey

Menentukan kolom yang digunakan untuk sharding data. Menyediakan splitKey memungkinkan sinkronisasi data paralel, yang meningkatkan performa. Tersedia dua metode pemisahan. Jika splitPoint kosong, data secara otomatis dipisah berdasarkan Metode 1:

  • Metode 1: Plugin menemukan nilai minimum dan maksimum kolom splitKey dan membuat pemisahan merata berdasarkan nilai concurrent yang ditentukan.

    Catatan

    Hanya tipe data integer dan string yang didukung untuk kunci pemisah.

  • Metode 2: Data dipisah sesuai dengan splitPoint yang ditentukan. Sinkronisasi kemudian dilakukan berdasarkan nilai concurrent yang dikonfigurasi.

Ya

Tidak ada

splitPoints

Memisahkan kolom berdasarkan nilai minimum dan maksimumnya dapat menyebabkan hotspot data. Oleh karena itu, kami menyarankan menetapkan titik pemisah berdasarkan startkey dan endkey dari regions. Pendekatan ini menyelaraskan setiap kueri dengan satu region, mencegah hotspot.

Tidak

Tidak ada

where

Kondisi filter. Anda dapat menambahkan filter ke kueri tabel. HBase20xsql Reader membuat kueri SQL berdasarkan kondisi column, table, dan where yang ditentukan, lalu mengekstrak data berdasarkan kueri tersebut.

Tidak

Tidak ada

querySql

Dalam beberapa kasus penggunaan, parameter where mungkin tidak cukup untuk menggambarkan kondisi filter yang diinginkan. Anda dapat menggunakan parameter ini untuk mendefinisikan kueri SQL filter kustom. Saat querySql dikonfigurasi, parameter queryserverAddress tetap diperlukan, tetapi HBase20xsql Reader mengabaikan parameter column, table, where, dan splitKey. Sebagai gantinya, plugin menggunakan kueri ini untuk mengambil data.

Tidak

Tidak ada

Demo skrip HBase11xsql Writer

{
  "type": "job",
  "version": "1.0",
  "configuration": {
    "setting": {
      "errorLimit": {
        "record": "0"
      },
      "speed": {
            "throttle":true,// Mengaktifkan Pembatasan kecepatan. Jika true, Pembatasan kecepatan diaktifkan berdasarkan nilai mbps. Jika false, parameter mbps diabaikan.
            "concurrent":1, // Jumlah tugas konkuren untuk pekerjaan.
            "mbps":"1"// Laju pembatasan. Dalam contoh ini, 1 mbps sama dengan 1 MB/s.
      }
    },
    "reader": {
      "plugin": "odps",
      "parameter": {
        "datasource": "",
        "table": "",
        "column": [],
        "partition": ""
      }
    },
    "plugin": "hbase11xsql",
    "parameter": {
      "table": "Nama tabel HBase target, yang case-sensitive.",
      "hbaseConfig": {
        "hbase.zookeeper.quorum": "Alamat server ZooKeeper kluster HBase target.",
        "zookeeper.znode.parent": "znode kluster HBase target."
      },
      "column": [
        "columnName"
      ],
      "batchSize": 256,
      "nullMode": "skip"
    }
  }
}

Parameter HBase11xsql Writer

Parameter

Deskripsi

Wajib

Default

plugin

Nama plugin. Harus hbase11xsql.

Ya

Tidak ada

table

Nama tabel Phoenix target untuk impor data. Parameter ini case-sensitive. Nama tabel Phoenix biasanya dalam huruf kapital.

Ya

Tidak ada

column

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

Catatan
  • Urutan kolom harus persis sesuai dengan urutan kolom output dari Reader.

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

Ya

Tidak ada

hbaseConfig

Alamat kluster HBase. Quorum ZooKeeper wajib diisi. Format: ip1,ip2,ip3.

Catatan
  • Gunakan koma untuk memisahkan beberapa alamat IP.

  • znode bersifat opsional. Nilai default adalah /hbase.

Ya

Tidak ada

batchSize

Jumlah maksimum baris dalam operasi tulis batch.

Tidak

256

nullMode

Menentukan cara menangani nilai null dari data sumber:

  • skip: Tidak menulis kolom. Jika nilai untuk kolom ini sudah ada di tabel target, nilai tersebut akan dihapus.

  • empty: Memasukkan nilai null. Untuk tipe numerik, nilainya 0; untuk tipe varchar, nilainya string kosong.

Tidak

skip