Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados HBase

Última atualização: Aug 20, 2026

A fonte de dados HBase permite ler e gravar dados no HBase. Este tópico descreve os recursos de sincronização de dados dessa source no DataWorks.

Versões suportadas

Existem dois tipos de plugins para HBase: o plugin HBase e o plugin HBase{xx}xsql. O plugin HBase{xx}xsql requer tanto o HBase quanto o Phoenix.

  1. Plugin HBase:

    Suporta as versões HBase0.94.x, HBase1.1.x e HBase2.x. Tanto a interface visual (Codeless UI) quanto o editor de código são suportados. Utilize o parâmetro hbaseVersion para especificar a versão.

    • Caso sua versão do HBase seja HBase0.94.x, defina hbaseVersion como 094x tanto para o leitor quanto para o escritor.

      "reader": {
              "hbaseVersion": "094x"
          }
      "writer": {
              "hbaseVersion": "094x"
          }
    • Se a versão do HBase for HBase1.1.x ou HBase2.x, configure hbaseVersion como 11x no leitor e no escritor.

      "reader": {
              "hbaseVersion": "11x"
          }
      "writer": {
              "hbaseVersion": "11x"
          }
      O plugin HBase1.1.x é compatível com o HBase 2.0.
  2. Plugin HBase{xx}xsql

    1. Plugin HBase20xsql: Suporta HBase2.x e Phoenix5.x. Apenas o editor de código é suportado.

      Plugin HBase11xsql: Suporta HBase1.1.x e Phoenix5.x. Apenas o editor de código é suportado.

    2. O plugin escritor HBase{xx}xsql oferece uma forma simples de importar dados em lote para tabelas SQL (Phoenix) no HBase. O Phoenix codifica a rowkey. A escrita de dados via API do HBase exige conversão manual, um processo complexo e propenso a erros.

      Nota

      O plugin utiliza o driver JDBC do Phoenix para executar instruções UPSERT, gravando dados na tabela em lotes. Sua interface de alto nível também permite atualizações síncronas nas tabelas de índice.

Limitações

HBase Reader

HBase20xsql Reader

HBase11xsql Writer

  • O particionamento de tabela restringe-se a uma única coluna, que deve ser a chave primária.

  • Para particionamento uniforme baseado na concorrência do job, a coluna de particionamento deve ser do tipo inteiro ou string.

  • Nomes de tabelas, schemas e colunas diferenciam maiúsculas de minúsculas e devem corresponder exatamente à formatação usada na tabela Phoenix.

  • O HBase20xsql Reader lê dados exclusivamente através do Phoenix QueryServer. Portanto, inicie o Phoenix QueryServer antes de utilizar o HBase20xsql Reader.

  • Apenas serverless resource group for Data Integration (recommended) é suportado.

  • Não há suporte para importação de dados com carimbo de data/hora.

  • Somente tabelas criadas com Phoenix são suportadas, excluindo tabelas nativas do HBase.

  • A ordem das colunas no escritor deve coincidir com a ordem no leitor. A sequência definida no leitor determina a disposição das colunas em cada linha de saída, enquanto a ordem no escritor define a sequência esperada nos dados recebidos. Por exemplo:

    • As colunas no leitor estão ordenadas como c1, c2, c3 e c4.

    • As colunas no escritor seguem a ordem x1, x2, x3 e x4.

    Nesse cenário, o valor da coluna c1 é atribuído à coluna x1. Se a ordem no escritor for x1, x2, x4 e x3, o valor de c3 será atribuído a x4, e o valor de c4 irá para x3.

  • A importação de dados para uma tabela indexada atualiza sincronizadamente todos os índices relacionados.

Recursos

HBase Reader

O HBase Reader opera nos modos normal e multiVersionFixedColumn. Consulte HBase field mapping guide para obter instruções de configuração.

  • No modo normal, o HBase Reader trata a tabela HBase como uma tabela bidimensional padrão (wide table) e lê a versão mais recente dos dados.

    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 tabela a seguir apresenta os dados de saída.

    Row key

    basic:age

    basic:name

    score:english

    score:math

    s001

    20

    Tom

    90

    85

  • Modo multiVersionFixedColumn: Lê a tabela HBase como uma tabela estreita (narrow table). Cada registro retornado contém quatro colunas: rowKey, family:qualifier, timestamp e value. Especifique explicitamente as colunas a serem lidas. O valor de cada célula é tratado como um registro individual; caso existam múltiplas versões, vários registros serão retornados.

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

    Row key

    family:qualifier

    Timestamp

    Value

    s001

    basic:age

    2026-03-09T14:41:40.240

    20

    s001

    basic:age

    2026-03-09T14:30:00.100

    19

    s001

    basic:name

    2026-03-09T14:41:40.214

    Tom

    s001

    score:english

    2026-03-09T14:41:40.333

    90

    s001

    score:math

    2026-03-09T14:41:40.277

    85

HBase Writer

  • Regra de geração de rowkey: Atualmente, o HBase Writer permite concatenar diversos campos da source para compor a rowkey da tabela HBase.

  • É possível definir uma versão (timestamp) para a gravação de dados no HBase. As opções disponíveis incluem:

    • Utilizar a hora atual como versão.

    • Indicar uma coluna de source como versão.

    • Especificar um horário fixo como versão.

Tipos de dados suportados

Leitura em lote

  • Esta tabela exibe os tipos de dados do HBase suportados e como o HBase Reader realiza suas conversões.

    Categoria

    Tipo de coluna do Data Integration

    Tipo de dado do banco

    Inteiro

    long

    short, int e long

    Ponto flutuante

    double

    float e double

    String

    string

    binary_string e string

    Data e hora

    date

    date

    Byte

    bytes

    bytes

    Booleano

    boolean

    boolean

  • O HBase20xsql Reader suporta a maioria dos tipos de dados do Phoenix, mas não todos. Verifique se seus tipos de dados são compatíveis.

  • A tabela abaixo ilustra como o HBase20xsql Reader mapeia os tipos de dados do Phoenix para os tipos internos do DataX.

    Tipo interno do DataX

    Tipo de dado do Phoenix

    long

    INTEGER, TINYINT, SMALLINT, BIGINT

    double

    FLOAT, DECIMAL, DOUBLE

    string

    CHAR, VARCHAR

    date

    DATE, TIME, TIMESTAMP

    bytes

    BINARY, VARBINARY

    boolean

    BOOLEAN

Escrita em lote

A tabela a seguir lista os tipos de dados suportados pelo HBase Writer.

Nota
  • O tipo de dado configurado para cada coluna deve corresponder ao tipo respectivo na tabela HBase.

  • Somente os tipos listados na tabela possuem suporte.

Categoria

Tipo de dado do banco

Inteiro

INT, LONG e SHORT

Ponto flutuante

FLOAT e DOUBLE

Booleano

BOOLEAN

String

STRING

Precauções

Ao testar a conectividade, caso encontre o erro "tried to access method com.google.common.base.Stopwatch", adicione a propriedade hbaseVersion na configuração da source de dados para especificar a versão do HBase.

Adicionar uma source de dados

Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a source de dados necessária seguindo as instruções em Data source configuration. Consulte as descrições dos parâmetros no console do DataWorks para compreender o significado de cada campo durante a adição da source de dados.

Desenvolver uma tarefa de sincronização de dados

Para informações sobre o ponto de entrada e o procedimento de configuração de tarefas de sincronização, consulte os guias abaixo.

Configure sincronização em lote de tabela única

  • Para mais detalhes, visualize Codeless UI configuration e script mode configuration.

    Como o HBase é uma source de dados sem schema, a Interface Visual (Codeless UI) não exibe mapeamentos de campos por padrão. Configure-os manualmente.

    Ao usar o HBase como source de dados, selecione primeiro um Output Mode: modo normal ou multiVersionFixedColumn.

    A configuração de mapeamento de campos varia conforme o modo escolhido:

    • Modo normal: Trata-se do modo padrão. Ele lê a tabela HBase como uma tabela bidimensional convencional e recupera a versão mais recente dos dados. Ao utilizar o HBase como source, configure o mapeamento entre o Source Field e o Target Field. Os campos de source e destino possuem mapeamento um para um. Visto que a tabela de source não tem campos fixos, o sistema os mapeia pela ordem padrão. Para alterar esse comportamento, edite manualmente a ordem dos campos.

      New version

      Na configuração de mapeamento de campos, os mapeamentos são: rowkeyrowkey, basic:ageage, basic:namename, score:englishenglish e score:mathmath. Os campos de source aparecem em formato JSON e incluem as propriedades name e type (ambas como string).

      Legacy version

      Na área de mapeamento, os campos de source exibem-se no formato Type|ColumnFamily:ColumnName, incluindo string|rowkey, string|basic:age, string|basic:name, string|score:english e string|score:math. Estes correspondem, respectivamente, aos campos de destino rowkey, age, name, english e math.

      A tabela de destino contém campos como rowkey, age, name, english, math e pt. Exemplo: rowkey=s001, age=20, name=Tom, english=90, math=85, pt=222222.

    • Modo multiVersionFixedColumn: Cada registro de saída consiste em quatro colunas (rowKey, family:qualifier, timestamp e value), permitindo a leitura de múltiplas versões de dados. O Source Field configura-se no formato ColumnFamily:Qualifier, como basic:age. A tabela de destino possui quatro colunas fixas: row_key, cf, timestamp_col e value. Nenhuma configuração adicional de mapeamento é necessária.

      New version

      Na área de mapeamento de campos, associe os campos de source aos de destino. Os campos de source estão em formato JSON. Exemplos de mapeamento: {"name":"rowkey","type":"string"} mapeia para o campo de destino rowkey; {"name":"basic:age","type":"string"} mapeia para family; {"name":"basic:name","type":"string"} mapeia para timestamp; e {"name":"score:english","type":"string"} mapeia para value. O sistema não sincroniza o campo de source não mapeado {"name":"score:math","type":"string"}. Clique em no botão Edit em qualquer lado para editar os campos de source ou destino, respectivamente.

      Legacy version

      Na área de mapeamento, o source field inclui string|rowkey, string|basic:age, string|basic:name, string|score:english e string|score:math. O target field compreende rowkey, family, timestamp e value. O mapeamento entre campos de source e destino ocorre linha a linha.

      A tabela de destino contém quatro colunas fixas: row_key, cf, timestamp_col e value. Exemplo: row_key=s001, cf=basic:age, timestamp_col=1234567890, value=20.

    • Ao utilizar o HBase como destino de dados (apenas o modo normal é suportado), configure o Target Field e a rowkey. Você pode formar o campo rowkey concatenando vários campos de source.

  • Para parâmetros e exemplos de script no modo de script, consulte Appendix: Script examples and parameter descriptions.

Perguntas frequentes

  • P: Qual é a configuração adequada de concorrência? Aumentar a concorrência ajuda quando a velocidade de importação está lenta?

    R: O tamanho padrão do heap da Java Virtual Machine (JVM) em um processo de importação de dados é de 2 GB. A concorrência implementa-se via multithreading e configura-se pelo número de canais. Threads em excesso podem degradar o desempenho sem melhorar a velocidade de importação devido à coleta de lixo frequente. Recomendamos usar entre 5 e 10 threads concorrentes (canais).

  • P: Qual é o valor ideal para batchSize?

    R: O valor padrão é 256. Calcule o batchSize ideal com base no tamanho da linha. Um único lote deve conter tipicamente entre 2 e 4 MB de dados. Divida esse volume pelo tamanho da linha para determinar o batchSize recomendado.

  • P: Ao ler dados do HBase no modo multiVersionFixedColumn, recebo o erro java.lang.StringIndexOutOfBoundsException: String index out of range: -1. Como resolver isso?

    R: Esse erro geralmente ocorre porque o campo name na configuração da coluna não segue o formato columnFamily:qualifier (columnFamily:qualifier). Por exemplo, você pode ter especificado apenas o qualifier, como age, em vez de basic:age. Para corrigir, garanta que o name de todas as colunas, exceto rowkey, esteja formatado como columnFamily:qualifier.

Apêndice: Script de exemplo e parâmetros

Configure uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote via editor de código, defina os parâmetros relevantes no script conforme os requisitos unificados de formato. Para mais informações, visualize Script mode configuration. As informações a seguir descrevem os parâmetros obrigatórios para fontes de dados ao utilizar o editor de código.

Exemplo do HBase Reader

{
    "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"
            }
        ]
    }
}

Script do HBase Reader (modo multiVersionFixedColumn)

O exemplo abaixo mostra um script completo para ler dados do HBase no modo multiVersionFixedColumn e gravá-los no MaxCompute. Nesse modo, o valor de cada célula no HBase converte-se em um registro separado. Cada registro compõe-se de quatro colunas: rowkey, family:qualifier, timestamp e 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"
            }
        ]
    }
}
Nota

Crie previamente a tabela de destino no MaxCompute. Exemplo: CREATE TABLE IF NOT EXISTS hbase_multiversion_target (row_key STRING, cf STRING, timestamp_col STRING, value STRING);

Parâmetros do script do HBase Reader

Parâmetro

Descrição

Obrigatório

Padrão

haveKerberos

Se haveKerberos for verdadeiro, o cluster HBase exige autenticação Kerberos.

Nota
  • Ao definir este parâmetro como true, configure também os seguintes parâmetros:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • Caso a autenticação Kerberos não esteja habilitada no cluster HBase, esses parâmetros não são necessários.

Não

false

hbaseConfig

Configuração necessária para conectar ao cluster HBase, em formato JSON. O parâmetro hbase.zookeeper.quorum, que especifica o endpoint do ZooKeeper para o HBase, é obrigatório. Adicione outras configurações de cliente HBase, como cache de varredura e definições de lote, para otimizar a interação com o servidor.

Nota

Para conectar a uma instância do ApsaraDB for HBase, utilize seu endpoint de rede interna.

Sim

Nenhum

mode

Os modos de leitura suportados para o HBase são normal e multiVersionFixedColumn.

Sim

Nenhum

table

Nome da tabela HBase a ser lida. Nomes de tabelas diferenciam maiúsculas de minúsculas.

Sim

Nenhum

encoding

Formato de codificação, como UTF-8 ou GBK, usado para converter um valor binário HBase byte[] em String.

Não

utf-8

column

Campo do HBase a ser lido. Este parâmetro é obrigatório nos modos normal e multiVersionFixedColumn.

  • No modo normal:

    O parâmetro name especifica a coluna do HBase a ser lida. Exceto para rowkey, o valor deste parâmetro deve estar no formato column family:qualifier. O parâmetro type define o tipo dos dados de source, e format especifica o formato para tipos de data. O parâmetro value indica que a coluna é uma constante. Ao usar value, nenhum dado é lido do HBase; em vez disso, gera-se automaticamente uma coluna correspondente baseada no valor especificado. O formato de configuração é:

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

    No modo normal, para as informações de Coluna especificadas, o parâmetro type é obrigatório, e você deve definir o parâmetro name ou value.

  • Modo multiVersionFixedColumn

    O parâmetro name especifica a coluna do HBase a ser lida. Exceto para rowkey, o valor deve estar no formato column family:qualifier. O parâmetro type define o tipo dos dados de source, e format especifica o formato para tipos de data. Colunas constantes não são suportadas no modo multiVersionFixedColumn. O formato de configuração é:

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

Sim

Nenhum

maxVersion

Número máximo de versões de células a ler no modo multiversão. Valores válidos são -1 (todas as versões) ou um inteiro maior que 1.

Obrigatório no modo multiVersionFixedColumn.

Nenhum

range

Define o intervalo de rowkey a ser lido.

  • startRowkey: Especifica a rowkey inicial.

  • endRowkey: Especifica a rowkey final.

  • isBinaryRowkey: Define como startRowkey e endRowkey são convertidos para byte[]. O valor padrão é false. Se definido como true, chama-se o método Bytes.toBytesBinary(rowkey). Se definido como false, invoca-se o método Bytes.toBytes(rowkey). O formato de configuração é:

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

Não

Nenhum

scanCacheSize

Quantidade de linhas a buscar do HBase em uma única chamada de procedimento remoto (RPC).

Não

256

scanBatchSize

Número de colunas a buscar do HBase em uma única RPC. Defina como -1 para buscar todas as colunas.

Nota

O valor de scanBatchSize deve ser maior que o número real de colunas para evitar riscos à qualidade dos dados.

Não

100

Script do HBase Writer

{
    "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"
            }
        ]
    }
}

Parâmetros do script do HBase Writer

Parâmetro

Descrição

Obrigatório

Padrão

haveKerberos

Indica se o cluster HBase requer autenticação Kerberos. Defina este parâmetro como true para habilitar a autenticação Kerberos.

Nota
  • Se você definir este parâmetro como true, configure os seguintes parâmetros de autenticação Kerberos:

    • kerberosKeytabFilePath

    • kerberosPrincipal

    • hbaseMasterKerberosPrincipal

    • hbaseRegionserverKerberosPrincipal

    • hbaseRpcProtection

  • Esses parâmetros não são necessários se a autenticação Kerberos estiver desabilitada.

Não

false

hbaseConfig

Configuração JSON para conexão com o cluster HBase. O parâmetro hbase.zookeeper.quorum é obrigatório e especifica o endpoint do ZooKeeper para o cluster HBase. Adicione outras configurações de cliente HBase, como cache de varredura e definições de lote, para otimizar a interação com o servidor.

Nota

Para conectar a um banco de dados ApsaraDB for HBase, utilize seu endpoint de rede interna.

Sim

Nenhum

mode

Modo para escrita de dados no HBase. Atualmente, apenas o modo normal é suportado.

Sim

Nenhum

table

Nome da tabela HBase onde os dados serão gravados. Este parâmetro diferencia maiúsculas de minúsculas.

Sim

Nenhum

encoding

Formato de codificação para converter dados STRING em HBase byte[]. Valores válidos: UTF-8 e GBK.

Não

UTF-8

column

Configuração das colunas nas quais os dados serão gravados:

  • index: Especifica o índice da coluna correspondente no leitor, começando em 0.

  • name: Define a coluna na tabela HBase. O formato deve ser column family:column name.

  • type: Determina o tipo de dado para a operação de escrita. Utilizado para converter os dados para o formato byte[] do HBase.

Sim

Nenhum

rowkeyColumn

Coluna rowkey na tabela HBase de destino:

  • index: Indica o índice da coluna correspondente no leitor, iniciando em 0. Se a coluna for uma constante, defina este parâmetro como -1.

  • type: Determina o tipo de dado para a operação de escrita. Usado para converter os dados para o formato byte[] do HBase.

  • value: Uma constante, frequentemente usada como separador para concatenar múltiplos campos. A rowkey não pode ser composta inteiramente por constantes.

O formato é o seguinte:

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

Sim

Nenhum

versionColumn

Especifica o timestamp para a operação de escrita. O valor pode vir de uma coluna de source ou ser uma constante. Caso não configurado, utiliza-se a hora atual do sistema.

  • index: Define o índice da coluna correspondente no leitor, começando em 0. Garanta que o valor possa ser convertido para o tipo LONG.

  • type: Se o tipo de dado for Date, o sistema tenta analisar o valor usando os formatos yyyy-MM-dd HH:mm:ss e yyyy-MM-dd HH:mm:ss SSS. Se utilizar um valor de timestamp específico, defina index como -1.

  • value: Um valor constante de timestamp do tipo LONG.

Os exemplos a seguir mostram o formato:

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

Não

Nenhum

nullMode

Define como tratar valores nulos nos dados de source:

  • skip: Ignora a escrita da coluna no HBase.

  • empty: Grava HConstants.EMPTY_BYTE_ARRAY, que equivale a new byte [0].

Não

skip

walFlag

Quando um cliente HBase envia dados, ele primeiro escreve as operações em um log de pré-escrita (WAL) antes de gravar no MemStore. Esse processo garante a durabilidade dos dados. Para melhorar o desempenho de escrita, desabilite o WAL definindo este parâmetro como false.

Não

false

writeBufferSize

Tamanho do buffer de escrita do cliente HBase, em bytes. Este parâmetro funciona em conjunto com autoflush.

autoflush (desabilitado por padrão):

  • true: Quando verdadeiro, o cliente envia uma requisição para cada operação put, e este buffer de escrita não é utilizado.

  • false: O cliente HBase envia uma requisição de escrita ao servidor HBase apenas quando o cache de escrita do lado do cliente está cheio.

Não

8 MB

fileSystemUsername

Para resolver problemas de permissão do Ranger durante uma tarefa de sincronização, converta a tarefa baseada em assistente para o modo de script. Em seguida, defina o parâmetro fileSystemUsername como um usuário que possua as permissões necessárias. O DataWorks acessará o HBase como esse usuário especificado.

Não

Nenhum

Demonstração do HBase20xsql Reader

{
    "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"
            }
        ]
    }
}

Parâmetros do HBase20xsql Reader

Parâmetro

Descrição

Obrigatório

Padrão

queryServerAddress

Endpoint do Phoenix QueryServer. O plugin HBase20xsql Reader usa um cliente leve para conectar-se a este endpoint. Para passar credenciais de usuário do ApsaraDB for HBase Performance-enhanced Edition (Lindorm), anexe as propriedades user e password à string queryServerAddress. Exemplo: http://127.0.0.1:8765;user=root;password=root.

Sim

Nenhum

serialization

Protocolo de serialização utilizado pelo Phoenix QueryServer.

Não

PROTOBUF

table

Nome da tabela a ser lida. O nome diferencia maiúsculas de minúsculas.

Sim

Nenhum

schema

Schema que contém a tabela.

Não

Nenhum

column

Colunas a sincronizar. Use um array JSON para definir os nomes das colunas. Se você não especificar este parâmetro ou deixá-lo vazio, o leitor lerá todas as colunas.

Não

Todas as colunas

splitKey

Durante a leitura de uma tabela, ocorre o particionamento. Se você especificar o parâmetro splitKey, o campo representado por splitKey será usado para o particionamento de dados. Isso permite que a sincronização inicie tarefas concorrentes e melhora o desempenho. Existem dois métodos de particionamento disponíveis. Se o parâmetro splitPoint estiver vazio, a tabela será particionada automaticamente pelo método um por padrão:

  • Método 1: Encontra os valores máximo e mínimo com base na splitKey e depois particiona uniformemente conforme o número concurrent especificado.

    Nota

    A chave de particionamento deve ser do tipo inteiro ou string.

  • Método 2: O leitor particiona os dados com base nos splitPoints configurados manualmente. A sincronização ocorre então conforme o número de tarefas concurrent configurado.

Sim

Nenhum

splitPoints

O particionamento automático baseado nos valores mínimo e máximo da chave pode não prevenir pontos críticos (hot spots) de dados. Para melhor desempenho, recomendamos definir pontos de particionamento personalizados com base na startkey e endkey das suas Regions do HBase. Isso garante que cada tarefa concorrente consulte uma única Region.

Não

Nenhum

where

Condição de filtro a adicionar à consulta da tabela. O HBase20xsql Reader constrói uma consulta SQL baseada nos parâmetros column, table e where para extrair dados.

Não

Nenhum

querySql

Para cenários de filtragem complexa onde o parâmetro where é insuficiente, forneça uma consulta SQL personalizada. Se configurar este parâmetro, o leitor ignorará os parâmetros column, table, where e splitKey. O parâmetro queryServerAddress continua sendo obrigatório.

Não

Nenhum

Exemplo do HBase11xsql Writer

{
  "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"
    }
  }
}

Parâmetros do HBase11xsql Writer

Parâmetro

Descrição

Obrigatório

Padrão

plugin

Especifica o nome do plugin. O valor deve ser hbase11xsql.

Sim

Nenhum

table

Especifica o nome da tabela de destino. Este parâmetro diferencia maiúsculas de minúsculas. Nomes de tabelas Phoenix costumam ser em maiúsculas.

Sim

Nenhum

column

Especifica os nomes das colunas. Os nomes diferenciam maiúsculas de minúsculas. Nomes de colunas Phoenix geralmente são em maiúsculas.

Nota
  • A ordem das colunas deve corresponder à da saída do leitor.

  • Não é necessário especificar tipos de dados. O escritor recupera automaticamente os metadados das colunas do Phoenix.

Sim

Nenhum

hbaseConfig

Especifica o endpoint do cluster HBase. Defina o endpoint do ZooKeeper (ZK) no formato ip1,ip2,ip3.

Nota
  • Use vírgulas (,) para separar múltiplos endereços IP.

  • O parâmetro znode é opcional. O valor padrão é /hbase.

Sim

Nenhum

batchSize

Define o número máximo de linhas para escrita em lote.

Não

256

nullMode

Define como lidar com valores nulos dos dados de source.

  • skip: O escritor ignora a escrita da coluna. Se já existir um valor para esta coluna na linha de destino, o escritor o exclui.

  • empty: O escritor insere um valor vazio. O valor vazio é 0 para tipos numéricos e uma string vazia para tipos varchar.

Não

skip