Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados HBase

Última atualização: Jun 27, 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 HBase0.94.x, HBase1.1.x e HBase2.x. Tanto a interface visual sem código quanto o editor de código são compatíveis. Use o parâmetro hbaseVersion para especificar a versão.

    • Se sua versão do HBase for HBase0.94.x, defina hbaseVersion como 094x tanto para o leitor quanto para o gravador.

      "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 gravador.

      "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. Compatível apenas com o editor de código.

      Plugin HBase11xsql: Suporta HBase1.1.x e Phoenix5.x. Compatível apenas com o editor de código.

    2. O plugin de escrita HBase{xx}xsql oferece uma maneira 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 e gravar 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 da tarefa, 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 por meio do Phoenix QueryServer. Portanto, inicie o Phoenix QueryServer para usar o HBase20xsql Reader.

  • Somente o grupo de recursos serverless para Data Integration (recomendado) é compatível.

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

  • Apenas tabelas criadas com Phoenix são compatíveis; tabelas nativas do HBase não são suportadas.

  • A ordem das colunas no gravador deve corresponder à ordem das colunas no leitor. A ordem no leitor determina a sequência das colunas em cada linha de saída, enquanto a ordem no gravador define a sequência esperada das colunas nos dados recebidos. Exemplo:

    • Ordem das colunas no leitor: c1, c2, c3 e c4.

    • Ordem das colunas no gravador: x1, x2, x3 e x4.

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

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

Recursos

HBase Reader

O HBase Reader suporta os modos normal e multiVersionFixedColumn. Consulte o Guia de mapeamento de campos do HBase para obter instruções de configuração.

  • No modo normal, o HBase Reader trata a tabela HBase como uma tabela bidimensional padrão (tabela larga) 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 mostra 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. Cada registro retornado consiste em 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. Se existirem 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 suporta a concatenação de vários campos da origem para usar como rowkey de uma tabela HBase.

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

    • Usar a hora atual como versão.

    • Especificar uma coluna de origem como versão.

    • Definir um horário específico como versão.

Tipos de dados suportados

Leitura em lote

  • Esta tabela apresenta os tipos de dados do HBase suportados e como o HBase Reader os converte.

    Categoria

    Tipo de coluna do Data Integration

    Tipo de dados 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 dados 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 dados configurado para cada coluna deve corresponder ao tipo de dados respectivo na tabela HBase.

  • Somente os tipos de dados listados na tabela são suportados.

Categoria

Tipo de dados do banco

Inteiro

INT, LONG e SHORT

Ponto flutuante

FLOAT e DOUBLE

Booleano

BOOLEAN

String

STRING

Precauções

Se você encontrar o erro "tried to access method com.google.common.base.Stopwatch" ao testar a conectividade, adicione a propriedade hbaseVersion à 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 Gerenciamento de fontes de dados. Consulte as descrições dos parâmetros no console do DataWorks para entender o significado de cada parâmetro ao adicionar uma 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 uma tarefa de sincronização, consulte os guias de configuração a seguir.

Configure sincronização em lote de tabela única

  • Para mais detalhes, visualize Configuração pela interface visual sem código e Configuração em modo de script.

    Como o HBase é uma source de dados sem schema, a interface visual sem código 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 modo multiVersionFixedColumn.

    A configuração de mapeamento de campos difere para cada modo:

    • Modo normal: Modo padrão. Lê uma tabela HBase como uma tabela bidimensional padrão e recupera a versão mais recente dos dados. Ao usar o HBase como source de dados, configure o mapeamento entre o Source Field e o Target Field. Os campos de origem e destino possuem um mapeamento um para um. Como a tabela de origem não tem campos fixos, os campos são mapeados por sua ordem por padrão. Para alterar o mapeamento, 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 origem são exibidos no formato JSON e incluem as propriedades name e type (ambas são string).

      Legacy version

      Na configuração de mapeamento de campos, os campos de origem são exibidos no formato Type|ColumnFamily:ColumnName, incluindo string|rowkey, string|basic:age, string|basic:name, string|score:english e string|score:math. Estes correspondem aos campos de destino rowkey, age, name, english e math, respectivamente.

      A tabela de destino contém campos como rowkey, age, name, english, math e pt. Por 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), e este modo permite ler várias versões de dados. O Source Field é configurado 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 de mapeamento é necessária.

      New version

      Na área de mapeamento de campos, mapeie os campos de origem para os campos de destino. Os campos de origem estão no formato JSON. Exemplos de mapeamentos: {"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 origem não mapeado {"name":"score:math","type":"string"}. Clique em Edit em qualquer um dos lados para editar os campos de origem e destino, respectivamente.

      Legacy version

      Na área de mapeamento de campos, o source field inclui string|rowkey, string|basic:age, string|basic:name, string|score:english e string|score:math. O target field inclui rowkey, family, timestamp e value. Os campos de origem e destino são mapeados linha por linha.

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

    • Ao usar o HBase como destino de dados (apenas o modo normal é compatível), configure o Target Field e a rowkey. É possível formar o campo rowkey concatenando vários campos de origem.

  • Para parâmetros e exemplos de script no modo de script, consulte Apêndice: Exemplos de scripts e descrições de parâmetros.

Perguntas frequentes

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

    R: O tamanho padrão do heap para a Java Virtual Machine (JVM) em um processo de importação de dados é de 2 GB. A concorrência é implementada por meio de multithreading e configurada 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 de 5 a 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 de 2 a 4 MB de dados. Divida esse volume de dados pelo tamanho da linha para determinar o batchSize recomendado.

  • P: Ao ler dados do HBase no modo multiVersionFixedColumn, recebo um 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 qualificador, como age, em vez de basic:age. Para resolver, 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 usando o editor de código, configure os parâmetros relacionados no script com base nos requisitos unificados de formato de script. Para mais informações, consulte Configuração em modo de script. As informações a seguir descrevem os parâmetros necessá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 a seguir 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 é convertido em um registro separado. Cada registro consiste em 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

A tabela de destino no MaxCompute deve ser criada antecipadamente. Por 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

  • Se a autenticação Kerberos não estiver habilitada para o cluster HBase, não é necessário configurar esses parâmetros.

Não

false

hbaseConfig

Configuração necessária para conectar-se ao cluster HBase, no 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-se 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. Os nomes das 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 uma 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 especifica o tipo dos dados de origem, e o parâmetro format define o formato para tipos de data. O parâmetro value indica que a coluna é uma constante. Se você usar o parâmetro value, os dados não serão lidos do HBase. Em vez disso, uma coluna correspondente será gerada automaticamente com base no valor especificado. O formato de configuração é o seguinte:

    "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 especificar 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 especifica o tipo dos dados de origem, e o parâmetro format define o formato para tipos de data. Colunas constantes não são suportadas no modo multiVersionFixedColumn. O formato de configuração é o seguinte:

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

Sim

Nenhum

maxVersion

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

Obrigatório no modo multiVersionFixedColumn.

Nenhum

range

Especifica o intervalo de rowkey a ser lido.

  • startRowkey: Define a rowkey inicial.

  • endRowkey: Define a rowkey final.

  • isBinaryRowkey: Especifica como startRowkey e endRowkey são convertidos para byte[]. O valor padrão é false. Se este parâmetro for definido como true, o método Bytes.toBytesBinary(rowkey) será chamado. Se definido como false, o método Bytes.toBytes(rowkey) será chamado. O formato de configuração é o seguinte:

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

Não

Nenhum

scanCacheSize

Número de linhas a serem buscadas do HBase em uma única chamada de procedimento remoto (RPC).

Não

256

scanBatchSize

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

Nota

O valor para 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

Especifica 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 mais 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-se a um banco de dados ApsaraDB for HBase, utilize seu endpoint de rede interna.

Sim

Nenhum

mode

Modo para gravar dados no HBase. Atualmente, apenas o modo normal é compatível.

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 para as colunas nas quais você está gravando dados:

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

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

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

Sim

Nenhum

rowkeyColumn

Coluna rowkey na tabela HBase onde os dados serão gravados:

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

  • type: Especifica o tipo de dados 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 vários 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 origem ou ser uma constante. Se este parâmetro não for configurado, a hora atual do sistema será usada.

  • index: Especifica o índice da coluna correspondente no leitor, começando em 0. Certifique-se de que o valor possa ser convertido para o tipo LONG.

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

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

Os exemplos a seguir mostram o formato.

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

Não

Nenhum

nullMode

Especifica como lidar com valores nulos nos dados de origem:

  • skip: Ignora a gravação 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 grava 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 para o cliente HBase, em bytes. Este parâmetro é usado em conjunto com autoflush.

autoflush (desabilitado por padrão):

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

  • false: O cliente HBase envia uma solicitaçã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 tenha 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 se conectar a este endpoint. Para passar credenciais de usuário para o ApsaraDB for HBase Performance-enhanced Edition (Lindorm), anexe as propriedades user e password à string queryServerAddress. Por exemplo: http://127.0.0.1:8765;user=root;password=root.

Sim

Nenhum

serialization

Protocolo de serialização usado 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 serem sincronizadas. 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

Quando uma tabela é lida, ela é particionada. 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 de dados inicie tarefas concorrentes e melhora o desempenho. Você pode escolher entre dois métodos diferentes de particionamento. Se o parâmetro splitPoint estiver vazio, a tabela será particionada automaticamente com base no método um por padrão:

  • Método 1: Encontra os valores máximo e mínimo com base no splitKey e, em seguida, particiona uniformemente de acordo com 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. Os dados são então sincronizados com base no número configurado de tarefas concurrent.

Sim

Nenhum

splitPoints

O particionamento automático baseado nos valores mínimo e máximo da chave de particionamento pode não evitar pontos de acesso (hot spots) de dados. Para obter desempenho ideal, recomendamos definir pontos de particionamento personalizados com base na startkey e na 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 ser adicionada à consulta da tabela. O HBase20xsql Reader constrói uma consulta SQL com base 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 você configurar este parâmetro, o leitor ignorará os parâmetros column, table, where e splitKey. O parâmetro queryServerAddress ainda é 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

Nome do plugin. O valor deve ser hbase11xsql.

Sim

Nenhum

table

Nome da tabela de destino. Este parâmetro diferencia maiúsculas de minúsculas. Os nomes das tabelas Phoenix geralmente são em maiúsculas.

Sim

Nenhum

column

Nomes das colunas. Os nomes diferenciam maiúsculas de minúsculas. Os nomes das 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 gravador recupera automaticamente os metadados da coluna do Phoenix.

Sim

Nenhum

hbaseConfig

Endpoint do cluster HBase. Você deve especificar o endpoint do ZooKeeper (ZK) no formato ip1,ip2,ip3.

Nota
  • Use vírgulas (,) para separar vários endereços IP.

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

Sim

Nenhum

batchSize

Número máximo de linhas para uma escrita em lote.

Não

256

nullMode

Define como lidar com valores nulos dos dados de origem.

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

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

Não

skip