Tüm Ürünler
Search
Belge Merkezi

DataWorks:HBase veri kaynağı

Son Güncelleme:Oct 05, 2026

HBase veri kaynağı, HBase'den veri okumanıza ve HBase'e veri yazmanıza olanak tanır. Bu konuda, DataWorks içindeki veri senkronizasyon yetenekleri açıklanmaktadır.

Desteklenen sürümler

İki tür HBase eklentisi bulunur: HBase eklentisi ve HBase{xx}xsql eklentisi. HBase{xx}xsql eklentisi hem HBase hem de Phoenix gerektirir.

  1. HBase eklentisi:

    HBase0.94.x, HBase1.1.x ve HBase2.x sürümlerini destekler. Hem kod içermeyen kullanıcı arayüzü hem de kod düzenleyici desteklenir. Sürümü belirtmek için hbaseVersion parametresini kullanın.

    • HBase sürümünüz HBase0.94.x ise, hem okuyucu hem de yazıcı için hbaseVersion değerini 094x olarak ayarlayın.

      "reader": {
              "hbaseVersion": "094x"
          }
      "writer": {
              "hbaseVersion": "094x"
          }
    • HBase sürümünüz HBase1.1.x veya HBase2.x ise, hem okuyucu hem de yazıcı için hbaseVersion değerini 11x olarak ayarlayın.

      "reader": {
              "hbaseVersion": "11x"
          }
      "writer": {
              "hbaseVersion": "11x"
          }
      HBase1.1.x eklentisi HBase 2.0 ile uyumludur.
  2. HBase{xx}xsql eklentisi

    1. HBase20xsql eklentisi: HBase2.x ve Phoenix5.x sürümlerini destekler. Yalnızca kod düzenleyici desteklenir.

      HBase11xsql eklentisi: HBase1.1.x ve Phoenix5.x sürümlerini destekler. Yalnızca kod düzenleyici desteklenir.

    2. HBase{xx}xsql yazıcı eklentisi, HBase içindeki SQL tablolarına (Phoenix) verileri toplu olarak aktarmak için basit bir yol sunar. Phoenix rowkey'i kodlar. HBase API'sini kullanarak veri yazmak, manuel veri dönüşümü gerektiren karmaşık ve hata yapmaya açık bir işlemdir.

      Not

      Eklenti, UPSERT deyimlerini yürütmek için Phoenix JDBC sürücüsünü kullanır ve verileri tabloya toplu halde yazar. Yüksek seviye arabirimi ayrıca dizin tablolarının eşzamanlı güncellenmesini sağlar.

Sınırlamalar

HBase Okuyucu

HBase20xsql Okuyucu

HBase11xsql Yazıcı

  • Tablo parçalama tek bir sütunla sınırlıdır ve bu sütun birincil anahtar olmalıdır.

  • İş eşzamanlılığına dayalı eşit parçalama için parçalama sütunu tamsayı veya dize türünde olmalıdır.

  • Tablo adları, şema adları ve sütun adları büyük/küçük harfe duyarlıdır ve Phoenix tablosundaki büyük/küçük harf kullanımıyla eşleşmelidir.

  • HBase20xsql Okuyucu yalnızca Phoenix QueryServer üzerinden veri okuyabilir. Bu nedenle, HBase20xsql Okuyucuyu kullanmak için Phoenix QueryServer'ı başlatmanız gerekir.

  • Yalnızca Veri Entegrasyonu için sunucusuz kaynak grubu (önerilen) desteklenir.

  • Zaman damgalı verilerin içe aktarılması desteklenmez.

  • Yalnızca Phoenix ile oluşturulan tablolar desteklenir; yerel HBase tabloları desteklenmez.

  • Yazıcıdaki sütun sırası, okuyucudaki sütun sırasıyla eşleşmelidir. Okuyucunun sütun sırası, her çıktı satırındaki sütunların sırasını belirler. Yazıcının sütun sırası, alınan verilerdeki beklenen sütun sırasını belirler. Örneğin:

    • Okuyucudaki sütun sırası c1, c2, c3 ve c4 şeklindedir.

    • Yazıcıdaki sütun sırası x1, x2, x3 ve x4 şeklindedir.

    Bu durumda, c1 sütununun değeri x1 sütununa atanır. Yazıcıdaki sütun sırası x1, x2, x4 ve x3 ise, c3 sütununun değeri x4 sütununa ve c4 sütununun değeri x3 sütununa atanır.

  • Dizinli bir tabloya veri içe aktarmak, ilgili tüm dizinleri eşzamanlı olarak günceller.

Özellikler

HBase Okuyucu

HBase Okuyucu normal ve multiVersionFixedColumn modlarını destekler. Yapılandırma talimatları için HBase alan eşleme kılavuzu bölümüne bakın.

  • normal modunda, HBase Okuyucu bir HBase tablosunu standart iki boyutlu bir tablo (geniş tablo) olarak ele alır ve verilerin en son sürümünü okur.

    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 

    Aşağıdaki tabloda çıktı verileri gösterilmektedir.


    Satır anahtarı


    basic:age


    basic:name


    score:english


    score:math


    s001


    20


    Tom


    90


    85

  • multiVersionFixedColumn modu: Bir HBase tablosunu dar tablo olarak okur. Döndürülen her kayıt dört sütundan oluşur: rowKey, family:qualifier, timestamp ve value. Okunacak sütunları açıkça belirtmeniz gerekir. Her hücrenin değeri bir kayıt olarak ele alınır. Birden fazla sürüm varsa birden fazla kayıt döndürülür.

    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 }


    Satır anahtarı


    family:qualifier


    Zaman damgası


    Değer


    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 Yazıcı

  • rowkey oluşturma kuralı: HBase Yazıcı şu anda, bir HBase tablosu için rowkey olarak kullanılmak üzere kaynaktan gelen birden fazla alanın birleştirilmesini destekler.

  • Verileri HBase'e yazmak için bir sürüm (zaman damgası) belirtebilirsiniz. Kullanılabilir seçenekler şunlardır:

    • Geçerli zamanı sürüm olarak kullanın.

    • Bir kaynak sütunu sürüm olarak belirtin.

    • Bir zamanı sürüm olarak belirtin.

Desteklenen veri türleri

Toplu okuma

  • Bu tabloda desteklenen HBase veri türleri ve HBase Okuyucunun bunları nasıl dönüştürdüğü gösterilmektedir.


    Kategori


    Veri Entegrasyonu sütun türü


    Veritabanı veri türü


    Tamsayı


    long


    short, int ve long


    Kayan nokta


    double


    float ve double


    Dize


    string


    binary_string ve string


    Tarih ve saat


    date


    date


    Bayt


    bytes


    bytes


    Boolean


    boolean


    boolean

  • HBase20xsql Okuyucu çoğu Phoenix veri türünü destekler ancak hepsini desteklemez. Veri türlerinizin desteklendiğinden emin olun.

  • Bu tabloda HBase20xsql Okuyucunun Phoenix veri türlerini DataX dahili türlerine nasıl eşlediği gösterilmektedir.


    DataX dahili türü


    Phoenix veri türü


    long


    INTEGER, TINYINT, SMALLINT, BIGINT


    double


    FLOAT, DECIMAL, DOUBLE


    string


    CHAR, VARCHAR


    date


    DATE, TIME, TIMESTAMP


    bytes


    BINARY, VARBINARY


    boolean


    BOOLEAN

Toplu yazma

Bu tabloda HBase Yazıcının desteklediği veri türleri listelenmektedir.

Not
  • Her sütun için yapılandırılan veri türü, HBase tablosundaki karşılık gelen veri türüyle eşleşmelidir.

  • Yalnızca tabloda listelenen veri türleri desteklenir.


Kategori


Veritabanı veri türü


Tamsayı


INT, LONG ve SHORT


Kayan nokta


FLOAT ve DOUBLE


Boolean


BOOLEAN


Dize


STRING

Önlemler

Bağlantıyı test ederken "tried to access method com.google.common.base.Stopwatch" hatasıyla karşılaşırsanız, HBase sürümünü belirtmek için veri kaynağı yapılandırmasına hbaseVersion özelliğini ekleyin.

Veri kaynağı ekleme

DataWorks'te bir senkronizasyon görevi geliştirmeden önce, Veri kaynağı yapılandırması konusundaki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.

Veri senkronizasyon görevi geliştirme

Bir senkronizasyon görevini yapılandırmaya giriş noktası ve prosedürü hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.

Tek tablo toplu senkronizasyonunu yapılandırma

  • Ayrıntılar için Kod içermeyen kullanıcı arayüzü yapılandırması ve betik modu yapılandırması bölümlerine bakın.

    HBase şemasız bir veri kaynağı olduğundan, Kod İçermeyen Kullanıcı Arayüzü varsayılan olarak alan eşlemelerini görüntülemez. Bunları manuel olarak yapılandırmanız gerekir.

    HBase'i veri kaynağı olarak kullanırken öncelikle bir Output Mode seçmeniz gerekir: normal mod veya multiVersionFixedColumn modu.

    Alan eşleme yapılandırması her mod için farklılık gösterir:

    • normal mod: Bu varsayılan moddur. Bu mod, bir HBase tablosunu standart iki boyutlu bir tablo olarak okur ve verilerin en son sürümünü alır. HBase'i veri kaynağı olarak kullanırken Source Field ile Target Field arasındaki eşlemeyi yapılandırmanız gerekir. Kaynak ve hedef alanlar arasında birebir eşleme bulunur. Kaynak tablonun sabit alanları olmadığından, alanlar varsayılan olarak sıralarına göre eşlenir. Eşlemeyi değiştirmek için alan sırasını manuel olarak düzenlemeniz gerekir.

      Yeni sürüm

      Alan eşleme yapılandırmasında eşlemeler şöyledir: rowkey → rowkey, basic:age → age, basic:name → name, score:english → english ve score:math → math. Kaynak alanlar JSON formatında görüntülenir ve name ile type (her ikisi de string) özelliklerini içerir.

      Eski sürüm

      Alan eşleme yapılandırmasında kaynak alanlar Type|ColumnFamily:ColumnName formatında görüntülenir; buna string|rowkey, string|basic:age, string|basic:name, string|score:english ve string|score:math dahildir. Bunlar sırasıyla rowkey, age, name, english ve math hedef alanlarıyla eşleşir.

      Hedef tabloda rowkey, age, name, english, math ve pt gibi alanlar bulunur. Örneğin: rowkey=s001, age=20, name=Tom, english=90, math=85, pt=222222.

    • multiVersionFixedColumn modu: Her çıktı kaydı dört sütundan (rowKey, family:qualifier, timestamp ve value) oluşur ve bu mod birden fazla veri sürümü okumanıza olanak tanır. Source Field, ColumnFamily:Qualifier formatında (örneğin basic:age) yapılandırılır. Hedef tabloda dört sabit sütun bulunur: row_key, cf, timestamp_col ve value. Eşleme yapılandırması gerekmez.

      Yeni sürüm

      Alan eşleme alanında kaynak alanları hedef alanlarla eşleyin. Kaynak alanlar JSON formatındadır. Örnek eşlemeler: {"name":"rowkey","type":"string"} rowkey hedef alanıyla, {"name":"basic:age","type":"string"} family ile, {"name":"basic:name","type":"string"} timestamp ile ve {"name":"score:english","type":"string"} value ile eşleşir. Sistem, eşlenmemiş kaynak alanı {"name":"score:math","type":"string"} ile senkronize etmez. Kaynak ve hedef alanları sırasıyla düzenlemek için her iki taraftaki Düzenle düğmesine tıklayabilirsiniz.

      Eski sürüm

      Alan eşleme alanında kaynak alan string|rowkey, string|basic:age, string|basic:name, string|score:english ve string|score:math öğelerini içerir. Hedef alan rowkey, family, timestamp ve value öğelerini içerir. Kaynak ve hedef alanlar satır satır eşlenir.

      Hedef tabloda row_key, cf, timestamp_col ve value olmak üzere dört sabit sütun bulunur. Örneğin: row_key=s001, cf=basic:age, timestamp_col=1234567890, value=20.

    • HBase'i veri hedefi olarak kullanırken (yalnızca normal mod desteklenir), Target Field ve rowkey öğelerini yapılandırmanız gerekir. Birden fazla kaynak alanı birleştirerek rowkey alanını oluşturabilirsiniz.

  • Betik modu için parametreler ve betik örnekleri için Ek: Betik örnekleri ve parametre açıklamaları bölümüne bakın.

SSS

  • S: Uygun bir eşzamanlılık ayarı nedir? İçe aktarma hızı yavaş olduğunda eşzamanlılığı artırmak yardımcı olur mu?

    C: Veri içe aktarma işlemindeki Java Sanal Makinesinin (JVM) varsayılan yığın boyutu 2 GB'dır. Eşzamanlılık, çoklu iş parçacığı aracılığıyla uygulanır ve kanal sayısı ile yapılandırılır. Aşırı sayıda iş parçacığı, sık çöp toplama nedeniyle içe aktarma hızını artırmadan performansı düşürebilir. 5–10 eşzamanlı iş parçacığı (kanal) kullanmanızı öneririz.

  • S: batchSize için optimum değer nedir?

    C: Varsayılan değer 256'dır. Optimum batchSize değerini satır boyutuna göre hesaplayın. Tek bir parti genellikle 2–4 MB veri içermelidir. Önerilen batchSize değerini belirlemek için bu veri hacmini satır boyutuna bölün.

  • S: multiVersionFixedColumn modunda HBase'den veri okurken java.lang.StringIndexOutOfBoundsException: String index out of range: -1 hatası alıyorum. Bu sorunu nasıl çözebilirim?

    C: Bu hata genellikle sütun yapılandırmasındaki name alanının columnFamily:qualifier (columnFamily:qualifier) formatını takip etmemesinden kaynaklanır. Örneğin, basic:age yerine yalnızca niteleyiciyi (age) belirtmiş olabilirsiniz. Bu sorunu çözmek için rowkey dışındaki her sütunun name değerinin columnFamily:qualifier formatında olduğundan emin olun.

Ek: Örnek betik ve parametreler

Kod düzenleyici kullanarak toplu senkronizasyon görevini yapılandırma

Toplu senkronizasyon görevini kod düzenleyici kullanarak yapılandırmak istiyorsanız, birleşik betik formatı gereksinimlerine göre betikteki ilgili parametreleri yapılandırmanız gerekir. Daha fazla bilgi için Betik modu yapılandırması konusuna bakın. Aşağıdaki bilgiler, kod düzenleyici kullanarak toplu senkronizasyon görevini yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.

HBase Okuyucu örneği

{
    "type":"job",
    "version":"2.0",// The version number.
    "steps":[
        {
            "stepType":"hbase",// The plugin name.
            "parameter":{
                "mode":"normal",// Specifies the mode for reading data from HBase. Valid values: `normal` and `multiVersionFixedColumn`.
                "scanCacheSize":"256",// Specifies the number of rows to fetch from the server per RPC.
                "scanBatchSize":"100",// Specifies the number of columns to fetch from the server per RPC. 
                "hbaseVersion":"094x/11x",// The HBase version.
                "column":[// The fields to read.
                    {
                        "name":"rowkey",// The field name.
                        "type":"string"// The data type.
                    },
                    {
                        "name":"basic:age",
                        "type":"string"
                    },
                    {
                        "name":"basic:name",
                        "type":"string"
                    },
                    {
                        "name":"score:english",
                        "type":"string"
                    },
                    {
                        "name":"score:math",
                        "type":"string"
                    }
                ],
                "range":{// Specifies the rowkey range to read.
                    "endRowkey":"",// The end rowkey.
                    "isBinaryRowkey":true,// Specifies whether to use binary conversion for startRowkey and endRowkey. The default value is false.
                    "startRowkey":""// The start rowkey.
                },
                "maxVersion":"",// Specifies the number of versions to read in multi-version mode.
                "encoding":"UTF-8",// The encoding format.
                "table":"student",// The table name.
                "hbaseConfig":{// The connection configuration for the HBase cluster, in JSON format.
                    "hbase.zookeeper.quorum":"hostname",
                    "hbase.rootdir":"hdfs://ip:port/database",
                    "hbase.cluster.distributed":"true"
                }
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"odps",// The plugin name for the destination. This example uses MaxCompute. You can replace it with another Writer plugin.
            "parameter":{
                "partition":"",// Partition information for the destination table. Not required for non-partitioned tables.
                "truncate":true,// Specifies whether to clear the destination table or partition before writing data.
                "datasource":"odps_datasource",// The MaxCompute data source name.
                "column":[// The destination fields.
                    "rowkey",
                    "basic_age",
                    "basic_name",
                    "score_english",
                    "score_math"
                ],
                "table":"student_target"// The name of the destination MaxCompute table.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// The maximum number of error records to allow before the job fails.
        },
        "speed":{
            "throttle":true,// Specifies whether to enable rate limiting. If set to false, the mbps parameter is ignored.
            "concurrent":1,// The number of concurrent jobs.
            "mbps":"12"// The rate limit in megabytes per second (MB/s).
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

HBase Okuyucu betiği (multiVersionFixedColumn modu)

Aşağıdaki örnek, multiVersionFixedColumn modunda HBase'den veri okuyup MaxCompute'a yazmak için eksiksiz bir betik göstermektedir. Bu modda, HBase'deki her hücrenin değeri ayrı bir kayda dönüştürülür. Her kayıt dört sütundan oluşur: rowkey, family:qualifier, timestamp ve value.

{
    "type":"job",
    "version":"2.0",
    "steps":[
        {
            "stepType":"hbase",// Plugin name.
            "parameter":{
                "mode":"multiVersionFixedColumn",// The mode for reading data from HBase. This example uses multiVersionFixedColumn mode.
                "scanCacheSize":"256",// The number of rows that the HBase client reads from the server in each remote procedure call (RPC).
                "scanBatchSize":"100",// The number of columns that the HBase client reads from the server in each RPC.
                "hbaseVersion":"20x",// HBase version.
                "datasource":"hbase_datasource",// HBase data source name.
                "column":[// The columns to read. The first column must be rowkey. The names of other columns must be in the "column family:qualifier" format.
                    {
                        "name":"rowkey",// The rowkey column.
                        "type":"string"
                    },
                    {
                        "name":"basic:age",// The age column in the basic column family.
                        "type":"string"
                    },
                    {
                        "name":"basic:name",// The name column in the basic column family.
                        "type":"string"
                    },
                    {
                        "name":"score:english",// The english column in the score column family.
                        "type":"string"
                    },
                    {
                        "name":"score:math",// The math column in the score column family.
                        "type":"string"
                    }
                ],
                "range":{
                    "isBinaryRowkey":false
                },
                "maxVersion":"-1",// The maximum number of versions to read. This parameter is required in multiVersionFixedColumn mode. A value of -1 specifies that all versions are read.
                "encoding":"UTF-8",// Encoding format.
                "table":"student"// HBase table name.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"odps",// The name of the destination plugin. This example uses MaxCompute.
            "parameter":{
                "partition":"",// The partition of the destination table. This parameter is not required for non-partitioned tables.
                "truncate":true,// If set to true, this clears the destination table or partition before writing data.
                "datasource":"odps_datasource",// MaxCompute data source name.
                "column":[// The destination has four fixed columns that correspond to the rowkey, family:qualifier, timestamp, and value from the source, respectively.
                    "row_key",
                    "cf",
                    "timestamp_col",
                    "value"
                ],
                "table":"hbase_multiversion_target"// The name of the destination MaxCompute table.
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// The maximum number of error records allowed.
        },
        "speed":{
            "throttle":false,// No rate limiting.
            "concurrent":2// Job concurrency.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}
Not

MaxCompute'daki hedef tablo önceden oluşturulmalıdır. Örneğin: CREATE TABLE IF NOT EXISTS hbase_multiversion_target (row_key STRING, cf STRING, timestamp_col STRING, value STRING);

HBase Okuyucu betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan

haveKerberos

haveKerberos true ise, HBase kümesi Kerberos kimlik doğrulaması gerektirir.

Not
  • Bu parametreyi true olarak ayarlarsanız aşağıdaki parametreleri de yapılandırmanız gerekir:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • HBase kümesinde Kerberos kimlik doğrulaması etkinleştirilmemişse bu parametreleri yapılandırmanız gerekmez.

Hayır

false

hbaseConfig

HBase kümesine bağlanmak için gereken yapılandırma, JSON formatında. HBase için ZooKeeper uç noktasını belirten hbase.zookeeper.quorum parametresi gereklidir. Sunucu ile etkileşimi optimize etmek için tarama önbelleği ve toplu iş ayarları gibi diğer HBase istemci yapılandırmalarını da ekleyebilirsiniz.

Not

ApsaraDB for HBase örneğine bağlanıyorsanız iç ağ uç noktasını kullanmanız gerekir.

Evet

Yok

mode

HBase için desteklenen okuma modları normal ve multiVersionFixedColumn'dir.

Evet

Yok

table

Okunacak HBase tablosunun adı. Tablo adları büyük/küçük harfe duyarlıdır.

Evet

Yok

encoding

İkili bir HBase byte[] değerini Dize'ye dönüştürmek için kullanılan kodlama formatı (örneğin UTF-8 veya GBK).

Hayır

utf-8

column

Okunacak HBase alanı. Bu parametre normal modunda ve multiVersionFixedColumn modunda gereklidir.

  • normal modunda:

    name parametresi okunacak HBase sütununu belirtir. rowkey dışında, bu parametrenin değeri sütun ailesi:niteleyici formatında olmalıdır. type parametresi kaynak verinin türünü belirtir ve format parametresi tarih türleri için formatı belirtir. value parametresi sütunun bir sabit olduğunu belirtir. value parametresini kullanırsanız veriler HBase'den okunmaz. Bunun yerine, belirtilen değere göre otomatik olarak ilgili bir sütun oluşturulur. Yapılandırma formatı aşağıdaki gibidir:

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

    normal modunda, belirttiğiniz Sütun bilgileri için type parametresi gereklidir ve name veya value parametrelerinden birini belirtmeniz gerekir.

  • multiVersionFixedColumn modu

    name parametresi okunacak HBase sütununu belirtir. rowkey dışında, değer sütun ailesi:niteleyici formatında olmalıdır. type parametresi kaynak verinin türünü belirtir ve format parametresi tarih türleri için formatı belirtir. multiVersionFixedColumn modunda sabit sütunlar desteklenmez. Yapılandırma formatı aşağıdaki gibidir:

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

Evet

Yok

maxVersion

Çok sürümlü modda okunacak hücre sürümlerinin maksimum sayısı. Geçerli değerler -1 (tüm sürümler) veya 1'den büyük bir tamsayıdır.

multiVersionFixedColumn modunda gereklidir.

Yok

range

Okunacak rowkey aralığını belirtir.

  • startRowkey: Başlangıç rowkey'ini belirtir.

  • endRowkey: Bitiş rowkey'ini belirtir.

  • isBinaryRowkey: startRowkey ve endRowkey değerlerinin byte[]'ye nasıl dönüştürüleceğini belirtir. Varsayılan değer false'tur. Bu parametre true olarak ayarlanırsa Bytes.toBytesBinary(rowkey) yöntemi çağrılır. Bu parametre false olarak ayarlanırsa Bytes.toBytes(rowkey) yöntemi çağrılır. Yapılandırma formatı aşağıdaki gibidir:

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

Hayır

Yok

scanCacheSize

Tek bir uzak yordam çağrısında (RPC) HBase'den getirilecek satır sayısı.

Hayır

256

scanBatchSize

Tek bir RPC'de HBase'den getirilecek sütun sayısı. Tüm sütunları getirmek için bunu -1 olarak ayarlayın.

Not

scanBatchSize değeri, veri kalitesi risklerini önlemek için gerçek sütun sayısından büyük olmalıdır.

Hayır

100

HBase Yazıcı betiği

{
    "type":"job",
    "version":"2.0",// The version number.
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"hbase",// The plugin name.
            "parameter":{
                "mode":"normal",// The write mode for HBase.
                "walFlag":"false",// Set to `false` to disable write-ahead logging (WAL).
                "hbaseVersion":"094x",// The HBase version.
                "rowkeyColumn":[// The columns that form the HBase rowkey.
                    {
                        "index":"0",// The index of the source data column.
                        "type":"string"// The data type for this part of the rowkey.
                    },
                    {
                        "index":"-1",
                        "type":"string",
                        "value":"_"
                    }
                ],
                "nullMode":"skip",// Specifies how to handle null values from the source.
                "column":[// The destination columns in the HBase table.
                    {
                        "name":"columnFamilyName1:columnName1",// The column name, in `family:qualifier` format.
                        "index":"0",// The index of the source data column.
                        "type":"string"// The data type of the column value.
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "index":"1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "index":"2",
                        "type":"string"
                    }
                ],
                "encoding":"utf-8",// The character encoding.
                "table":"",// The name of the destination HBase table.
                "hbaseConfig":{// Configuration for the HBase cluster connection, in JSON format.
                    "hbase.zookeeper.quorum":"hostname",
                    "hbase.rootdir":"hdfs: //ip:port/database",
                    "hbase.cluster.distributed":"true"
                }
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// The maximum number of allowed error records.
        },
        "speed":{
            "throttle":true,// Enables (`true`) or disables (`false`) rate limiting. If `true`, the rate is defined by the `mbps` parameter.
            "concurrent":1, // The number of concurrent write tasks.
            "mbps":"12"// The maximum transfer rate in megabytes per second (MB/s).
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

HBase yazıcı betik parametreleri

Parametre

Açıklama

Gerekli

Varsayılan

haveKerberos

HBase kümesinin Kerberos kimlik doğrulaması gerektirip gerektirmediğini belirtir. Kerberos kimlik doğrulamasını etkinleştirmek için bu parametreyi true olarak ayarlayın.

Not
  • Bu parametreyi true olarak ayarlarsanız aşağıdaki Kerberos kimlik doğrulama parametrelerini yapılandırmanız gerekir:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • Kerberos kimlik doğrulaması devre dışı bırakılırsa bu parametreler gerekli değildir.

Hayır

false

hbaseConfig

HBase kümesine bağlanmak için JSON yapılandırması. hbase.zookeeper.quorum parametresi gereklidir ve HBase kümesi için ZooKeeper uç noktasını belirtir. Sunucu etkileşimini optimize etmek için tarama önbelleği ve toplu iş ayarları gibi daha fazla HBase istemci yapılandırması ekleyebilirsiniz.

Not

ApsaraDB for HBase veritabanına bağlanmak için iç ağ uç noktasını kullanmanız gerekir.

Evet

Yok

mode

HBase'e veri yazma modu. Şu anda yalnızca normal modu desteklenmektedir.

Evet

Yok

table

Veri yazılacak HBase tablosunun adı. Bu parametre büyük/küçük harfe duyarlıdır.

Evet

Yok

encoding

STRING verilerini HBase byte[] formatına dönüştürmek için kodlama formatı. Geçerli değerler: UTF-8 ve GBK.

Hayır

UTF-8

column

Veri yazdığınız sütunlar için yapılandırma:

  • index: Okuyucudan gelen karşılık gelen sütunun indeksini belirtir, 0'dan başlar.

  • name: HBase tablosundaki sütunu belirtir. Format sütun ailesi:sütun adı olmalıdır.

  • type: Yazma işlemi için veri türünü belirtir. Bu, verileri HBase byte[] formatına dönüştürmek için kullanılır.

Evet

Yok

rowkeyColumn

Veri yazılacak HBase tablosundaki rowkey sütunu:

  • index: Okuyucudan gelen karşılık gelen sütunun indeksini belirtir, 0'dan başlar. Sütun bir sabitse bu parametreyi -1 olarak ayarlayın.

  • type: Yazma işlemi için veri türünü belirtir. Bu, verileri HBase byte[] formatına dönüştürmek için kullanılır.

  • value: Genellikle birden fazla alanı birleştirmek için ayırıcı olarak kullanılan bir sabit. Rowkey tamamen sabitlerden oluşamaz.

Format aşağıdaki gibidir.

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

Evet

Yok

versionColumn

Yazma işlemi için zaman damgasını belirtir. Değer bir kaynak sütundan veya bir sabitten gelebilir. Bu parametre yapılandırılmazsa sistemin geçerli saati kullanılır.

  • index: Okuyucudan gelen karşılık gelen sütunun indeksini belirtir, 0'dan başlar. Değerin LONG türüne dönüştürülebildiğinden emin olun.

  • type: Veri türü Date ise sistem değeri yyyy-MM-dd HH:mm:ss ve yyyy-MM-dd HH:mm:ss SSS formatlarını kullanarak ayrıştırmaya çalışır. Belirli bir zaman damgası değeri kullanılıyorsa index değerini -1 olarak ayarlayın.

  • value: LONG türünde bir sabit zaman damgası değeri.

Aşağıdaki örnekler formatı göstermektedir.

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

Hayır

Yok

nullMode

Kaynak verilerdeki null değerlerin nasıl işleneceğini belirtir:

  • skip: Sütunun HBase'e yazılmasını atlar.

  • empty: HConstants.EMPTY_BYTE_ARRAY (new byte [0]) yazar.

Hayır

skip

walFlag

Bir HBase istemcisi veri gönderdiğinde, işlemleri önce write-ahead log (WAL) dosyasına yazar, ardından MemStore'a yazar. Bu süreç veri dayanıklılığını sağlar. Yazma performansını artırmak için bu parametreyi false olarak ayarlayarak WAL'ı devre dışı bırakabilirsiniz.

Hayır

false

writeBufferSize

HBase istemcisi için yazma arabelleğinin boyutu (bayt cinsinden). Bu parametre autoflush ile birlikte kullanılır.

autoflush (varsayılan olarak devre dışı):

  • true: True olduğunda istemci her put işlemi için bir istek gönderir ve bu yazma arabelleği kullanılmaz.

  • false: HBase istemcisi, istemci tarafındaki yazma önbelleği dolduğunda HBase sunucusuna bir yazma isteği gönderir.

Hayır

8 MB

fileSystemUsername

Bir senkronizasyon görevi sırasında Ranger izin sorunlarını çözmek için sihirbaz tabanlı görevi betik moduna dönüştürün. Ardından, fileSystemUsername parametresini gerekli izinlere sahip bir kullanıcıya ayarlayın. DataWorks daha sonra HBase'e bu belirtilen kullanıcı olarak erişecektir.

Hayır

Yok

HBase20xsql Okuyucu demosu

{
    "type":"job",
    "version":"2.0",// Version number.
    "steps":[
        {
            "stepType":"hbase20xsql",// Plugin name.
            "parameter":{
                "queryServerAddress": "http://127.0.0.1:8765",  // Phoenix QueryServer endpoint.
                "serialization": "PROTOBUF",  // QueryServer serialization format.
                "table": "TEST",    // Table to read.
                "column": ["ID", "NAME"],   // Columns to read.
                "splitKey": "ID"    // Sharding key, which must be the primary key of the table.
            },
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// Maximum allowed error records.
        },
        "speed":{
            "throttle":true,// Toggles rate limiting. If true, the rate is limited by the mbps parameter.
            "concurrent":1,// Number of concurrent jobs.
            "mbps":"12"// Rate limit in MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

HBase20xsql Okuyucu parametreleri

Parametre

Açıklama

Gerekli

Varsayılan

queryServerAddress

Phoenix QueryServer uç noktası. HBase20xsql Okuyucu eklentisi bu uç noktaya bağlanmak için hafif bir istemci kullanır. ApsaraDB for HBase Performans Geliştirilmiş Sürüm (Lindorm) için kullanıcı kimlik bilgilerini geçirmek amacıyla user ve password özelliklerini queryServerAddress dizesine ekleyin. Örneğin: http://127.0.0.1:8765;user=root;password=root.

Evet

Yok

serialization

Phoenix QueryServer tarafından kullanılan serileştirme protokolü.

Hayır

PROTOBUF

table

Okunacak tablonun adı. Ad büyük/küçük harfe duyarlıdır.

Evet

Yok

schema

Tabloyu içeren şema.

Hayır

Yok

column

Senkronize edilecek sütunlar. Sütun adlarını tanımlamak için bir JSON dizisi kullanın. Bu parametreyi belirtmezseniz veya boş bırakırsanız okuyucu tüm sütunları okur.

Hayır

Tüm sütunlar

splitKey

Bir tablo okunduğunda parçalanır. splitKey parametresini belirtirseniz, splitKey tarafından temsil edilen alan veri parçalama için kullanılır. Bu, veri senkronizasyonunun eşzamanlı görevler başlatmasına olanak tanır ve performansı artırır. İki farklı parçalama yöntemi arasında seçim yapabilirsiniz. splitPoint parametresi boşsa, tablo varsayılan olarak birinci yönteme göre otomatik olarak parçalanır:

  • Yöntem 1: splitKey temel alınarak maksimum ve minimum değerleri bulun ve ardından belirtilen concurrent sayısına göre eşit şekilde parçalayın.

    Not

    Parçalama anahtarı tamsayı veya dize türünde olmalıdır.

  • Yöntem 2: Okuyucu, manuel olarak yapılandırılan splitPoints değerlerine göre verileri böler. Veriler daha sonra yapılandırılan concurrent görev sayısına göre senkronize edilir.

Evet

Yok

splitPoints

Parçalama anahtarının minimum ve maksimum değerlerine dayalı otomatik parçalama, veri sıcak noktalarını önlemeyebilir. Optimum performans için, her eşzamanlı görevin tek bir Bölgeyi sorgulamasını sağlamak üzere HBase Bölgelerinizin startkey ve endkey değerlerine dayalı özel parçalama noktaları tanımlamanızı öneririz.

Hayır

Yok

where

Tablo sorgusuna eklenecek bir filtre koşulu. HBase20xsql Okuyucu, veri çıkarmak için column, table ve where parametrelerine dayalı bir SQL sorgusu oluşturur.

Hayır

Yok

querySql

where parametresinin yetersiz kaldığı karmaşık filtreleme senaryoları için özel bir SQL sorgusu sağlayabilirsiniz. Bu parametreyi yapılandırırsanız okuyucu column, table, where ve splitKey parametrelerini yoksayar. queryServerAddress parametresi yine de gereklidir.

Hayır

Yok

HBase11xsql Yazıcı örneği

{
  "type": "job",
  "version": "1.0",
  "configuration": {
    "setting": {
      "errorLimit": {
        "record": "0"
      },
      "speed": {
            "throttle":true,// Enables rate limiting. If set to false, the mbps parameter is ignored.
            "concurrent":1, // The number of concurrent jobs.
            "mbps":"1"// Rate limit in MB/s.
      }
    },
    "reader": {
      "plugin": "odps",
      "parameter": {
        "datasource": "",
        "table": "",
        "column": [],
        "partition": ""
      }
    },
    "plugin": "hbase11xsql",
    "parameter": {
      "table": "The name of the destination HBase table. The name is case-sensitive.",
      "hbaseConfig": {
        "hbase.zookeeper.quorum": "The ZooKeeper endpoint of the destination HBase cluster.",
        "zookeeper.znode.parent": "The znode of the destination HBase cluster."
      },
      "column": [
        "columnName"
      ],
      "batchSize": 256,
      "nullMode": "skip"
    }
  }
}

HBase11xsql Yazıcı parametreleri

Parametre

Açıklama

Gerekli

Varsayılan

plugin

Eklentinin adını belirtir. Değer hbase11xsql olmalıdır.

Evet

Yok

table

Hedef tablonun adını belirtir. Bu parametre büyük/küçük harfe duyarlıdır. Phoenix tablo adları genellikle büyük harfle yazılır.

Evet

Yok

column

Sütun adlarını belirtir. Adlar büyük/küçük harfe duyarlıdır. Phoenix sütun adları genellikle büyük harfle yazılır.

Not
  • Sütun sırası, okuyucu çıktısıyla eşleşmelidir.

  • Veri türlerini belirtmenize gerek yoktur. Yazıcı, sütun meta verilerini otomatik olarak Phoenix'ten alır.

Evet

Yok

hbaseConfig

HBase kümesi uç noktasını belirtir. ZooKeeper (ZK) uç noktasını ip1,ip2,ip3 formatında belirtmeniz gerekir.

Not
  • Birden fazla IP adresini ayırmak için virgül (,) kullanın.

  • znode parametresi isteğe bağlıdır. Varsayılan değer /hbase'dir.

Evet

Yok

batchSize

Toplu yazma için maksimum satır sayısını belirtir.

Hayır

256

nullMode

Kaynak verilerden gelen null değerlerin nasıl işleneceğini belirtir.

  • skip: Yazıcı sütunu yazmayı atlar. Hedef satırda bu sütun için zaten bir değer varsa yazıcı bunu siler.

  • empty: Yazıcı boş bir değer ekler. Sayısal türler için boş değer 0, varchar türleri için boş dizedir.

Hayır

skip