Todos os produtos
Search
Central de documentação

DataHub:Crie um conector de sincronização do MaxCompute

Última atualização: Aug 25, 2026

Pré-requisitos

Crie uma tabela do MaxCompute

Use tabelas particionadas para simplificar o processamento de dados no MaxCompute.

O DataHub permite sincronizar dados de tópicos TUPLE e BLOB para tabelas do MaxCompute.

  • Em tópicos TUPLE, os tipos de dados da tabela de destino no MaxCompute devem ser compatíveis com o schema do tópico no DataHub. A tabela a seguir apresenta os mapeamentos de tipos de dados.

    MaxCompute

    DataHub

    BIGINT

    BIGINT

    STRING

    STRING

    BOOLEAN

    BOOLEAN

    DOUBLE

    DOUBLE

    DATETIME

    TIMESTAMP

    DECIMAL

    DECIMAL

    TINYINT

    TINYINT

    SMALLINT

    SMALLINT

    INT

    INTEGER

    FLOAT

    FLOAT

    MAP

    Não suportado

    ARRAY

    Não suportado

    Ao criar o schema da tabela do MaxCompute, use apenas tipos de dados suportados pelo DataHub.

  • Para tópicos BLOB, o schema da tabela do MaxCompute deve conter apenas uma coluna STRING. O DataHub sincroniza os dados automaticamente para essa coluna.

    DataHub

    MaxCompute

    BLOB

    STRING

  • Para facilitar o rastreamento e a solução de problemas, adicione uma coluna chamada __rowkey__ STRING ao criar a tabela do MaxCompute. O DataHub sincroniza automaticamente as informações de rastreamento para essa coluna, auxiliando na investigação dos dados.

Conta e permissões

Unidade de timestamp

  • O parâmetro TimestampUnit define a unidade usada para converter dados TIMESTAMP antes de gravá-los em um tipo de dado relacionado a data, como DATETIME, no sistema de destino.

  • Se a coluna TIMESTAMP contiver valores em segundos, selecione SECOND para TimestampUnit ao criar o conector. Caso os valores estejam em milissegundos, escolha MILLISECOND. Para valores em microssegundos, selecione MICROSECOND.

Importante

Devido aos padrões de gravação do MaxCompute, um número elevado de partições reduz a velocidade da sincronização de dados do DataHub. Ao criar uma tarefa de sincronização para o MaxCompute, limite ao máximo a quantidade de partições, especialmente no modo de sincronização USER_DEFINE.

  • Mantenha os dados dentro da mesma partição o mais contíguos possível e evite alternâncias frequentes entre partições.

  • Quando o modo de sincronização controlar a criação de partições, não crie um número excessivo delas.

Nota

Com o recurso de lista de permissões ativado em um projeto do MaxCompute, apenas dispositivos incluídos nessa lista podem acessar o projeto. Após ativar a lista de permissões de IP do MaxCompute, adicione o service à lista para garantir que o service de sincronização consiga acessar o projeto. Para mais detalhes, consulte Overview.

Modos de sincronização

Modo Append

Os dados são adicionados à tabela de destino. Este modo é ideal para cenários em que os dados precisam apenas ser inseridos, sem atualizações.

Modo Upsert

Upsert combina Update e Insert com a seguinte lógica:

  • Caso já exista um registro com a mesma chave primária na tabela de destino, o registro existente será atualizado.

  • Se não houver nenhum registro com a mesma chave primária na tabela de destino, um novo registro será inserido.

O modo upsert oferece uma forma flexível de lidar com atualizações e inserções, mantendo os dados da tabela de destino sempre atualizados.

Nota

Para mais informações sobre o recurso Upsert no MaxCompute, consulte Basic concepts.

Casos de uso

  • Atualização de dados com base em uma chave primária: Os dados podem mudar ao longo do tempo, exigindo a atualização dos registros existentes com base em suas chaves primárias.

  • Manutenção da unicidade dos dados na tabela de destino: Este modo evita duplicidades ao impor a unicidade dos registros na tabela de destino.

  • Tratamento de dados duplicados: Deduplica grandes volumes de dados com base em uma chave primária específica.

Configuração

  1. Tipo de tópico do DataHub: Deve ser um tópico TUPLE.

  2. Schema do tópico do DataHub: Dois tipos são suportados:

    1. Formato DTS: Tipo de schema usado quando o DTS sincroniza dados para o DataHub.

    2. Formato personalizado: Schema criado pelo usuário, no qual é necessário selecionar uma coluna do tipo String para funcionar como coluna de operação.

  3. Tabela de destino ODPS: Deve ser uma tabela Transaction 2.0.

Regras de sincronização

Formato DTS

Para formatos de dados sincronizados do DTS para o DataHub, o sistema usa as colunas fixas operation_flag, before_flag e after_flag no schema para determinar como sincronizar os dados com a tabela de destino ODPS, seguindo as regras abaixo:

operation_flag

before_flag

after_flag

Tipo de operação

Ação

I

*

*

UPSERT

Atualiza o registro na tabela de destino com base na chave primária.

U

Y

N

DELETE

Exclui o registro da tabela de destino com base na chave primária.

U

N

Y

UPSERT

Atualiza o registro na tabela de destino com base na chave primária.

D

*

*

DELETE

Exclui o registro da tabela de destino com base na chave primária.

Formato personalizado

Para dados criados pelo usuário, o DataHub usa a coluna de operação selecionada para definir como sincronizar os dados com a tabela de destino ODPS.

Valor da operação

Tipo de operação

Ação

U

UPSERT

Atualiza o registro na tabela de destino com base na chave primária.

D

DELETE

Exclui o registro da tabela de destino com base na chave primária.

Crie um conector de sincronização

  1. No console do DataHub, acesse a página de detalhes do seu tópico.

  2. No canto superior direito da página de detalhes do tópico, clique em Sync para criar uma tarefa de sincronização.

  3. Selecione o tipo de job MaxCompute para abrir a página Create Connector.

    Parâmetros:

    Parâmetro

    Opção

    Obrigatório

    Descrição

    Nome do projeto

    /

    Sim

    Nome do projeto do MaxCompute. Selecione o projeto na lista suspensa. Caso não tenha permissão para obter a lista de projetos, insira o nome manualmente.

    Schema

    /

    Não

    Nome do schema do MaxCompute.

    Nota

    Para usar o recurso Schema, ative o desenvolvimento de sintaxe de schema. Para saber como ativar e obter mais detalhes sobre schemas, consulte Operações de schema.

    Tabela

    /

    Sim

    Nome da tabela do MaxCompute. Selecione a tabela na lista suspensa. Se não tiver permissão para recuperar a lista de tabelas, insira o nome manualmente.

    Nota

    Ao usar o modo upsert, a tabela de destino deve ser uma tabela Transaction 2.0.

    Modo de sincronização

    Append

    Sim

    Adiciona dados à tabela de destino do MaxCompute.

    Upsert

    Atualiza ou exclui dados na tabela de destino do MaxCompute com base na chave primária.

    Para mais detalhes, consulte a seção Modos de sincronização.

    Método de autenticação

    AK

    Autentica usando um par de AccessKey.

    DataHub Default Role

    Ao selecionar esta opção, a função datahub__access__role é autorizada automaticamente para o projeto. A política de permissão desta função é:

    {
      "Statement": [
        {
          "Action": [
            "odps:CreateInstance",
            "odps:CreateTable",
            "odps:Describe",
            "odps:Alter",
            "odps:Update"
          ],
          "Effect": "Allow",
          "Resource": [
            "*"
          ]
        }
      ],
      "Version": "1"
    }

    Custom Role

    Função personalizada que pode ser criada e gerenciada no console do RAM.

    Método de upsert

    SYNC_CUSTOM

    Obrigatório se o Modo de sincronização estiver definido como Upsert. Não aplicável se o Modo de sincronização estiver definido como Append.

    Usa um campo de operação de upsert personalizado.

    SYNC_NONE

    Todos os dados são gravados na tabela de destino usando a operação de upsert.

    SYNC_DTS

    Aplicável a cenários onde os dados são gravados do DTS para o DataHub com as novas regras de coluna de anexo do DTS ativadas.

    SYNC_DTS_OLD

    Aplicável a cenários onde os dados são gravados do DTS para o DataHub com as antigas regras de coluna de anexo do DTS ativadas.

    Campos de chave primária

    /

    Colunas de chave primária da tabela de destino. Obrigatório para sincronização via upsert.

    Campo de operação de upsert

    /

    Obrigatório se o Método de upsert estiver definido como SYNC_CUSTOM .

    Selecione uma coluna do tipo String para usar como campo Operation. Este campo indica se os dados atuais serão sincronizados com a tabela downstream como uma operação de Upsert ou Delete.

  4. Para mais informações sobre o modo upsert, consulte a seção Modo Upsert neste tópico.

    • Campos a importar: Configure o DataHub para sincronizar apenas um subconjunto de colunas com a tabela do MaxCompute.

    • O modo de partição determina a partição do MaxCompute onde os dados serão gravados. O DataHub suporta os seguintes métodos de particionamento:

      Modo de partição

      Base da partição

      Tipos de tópico

      Descrição

      USER_DEFINE

      Valor da coluna de partição no registro. A coluna deve ter o mesmo nome do campo de partição no MaxCompute.

      TUPLE

      • O schema do DataHub deve incluir os campos de partição do MaxCompute.

      • O valor da coluna deve ser uma string UTF-8. O valor pode estar vazio, indicando que os dados não são particionados.

      SYSTEM_TIME

      Momento em que o registro é gravado no DataHub.

      TUPLE / BLOB

      • Na configuração de partição, defina o formato de conversão de tempo para a partição do MaxCompute.

      • Defina as informações de fuso horário.

      EVENT_TIME

      Valor da coluna event_time(TIMESTAMP) no registro.

      TUPLE

      • Na configuração de partição, defina o formato de conversão de tempo para a partição do MaxCompute.

      • Defina as informações de fuso horário.

      META_TIME

      Valor do campo de atributo __dh_meta_time__ no registro.

      TUPLE / BLOB

      • Na configuração de partição, defina o formato de conversão de tempo para a partição do MaxCompute.

      • Defina as informações de fuso horário.

      Os modos SYSTEM_TIME, EVENT_TIME e META_TIME convertem timestamps para criar partições do MaxCompute com base na configuração de timestamp e fuso horário. A unidade padrão é microssegundos.

    • A configuração de partição especifica como converter timestamps em partições do MaxCompute. O console usa um formato fixo padrão para as partições do MaxCompute, conforme abaixo:

      Partição

      Formato de hora

      Descrição

      ds

      %Y%m%d

      Dia

      hh

      %H

      Hora

      mm

      %M

      Minuto

      • Intervalo de partição: Intervalo de tempo para converter timestamps em partições do MaxCompute. O intervalo varia de 15 minutos a 1440 minutos (1 dia), com incrementos de 15 minutos.

      • As informações de fuso horário (TimeZone) determinam o fuso usado para converter partições do MaxCompute com base nos timestamps.

      • Delimitador: Ao sincronizar dados BLOB, especifique um delimitador hexadecimal para dividir os dados antes de sincronizá-los com o MaxCompute. Por exemplo, 0A representa o caractere de nova linha (\n).

      • Codificação Base64: O DataHub armazena dados BLOB como binários por padrão, enquanto a coluna correspondente no MaxCompute é do tipo STRING. Portanto, ao criar um conector de sincronização no console, os dados são codificados em Base64 por padrão. Para opções adicionais de personalização, use o SDK.

Visualize um conector de sincronização

Acesse a página de detalhes do conector para visualizar informações como status de execução e checkpoint. Nessa página, também é possível realizar operações como reiniciar e parar o conector.

Edite um conector de sincronização

Na página da tarefa de sincronização, clique em Edit para modificar o método de autenticação, campos importados, intervalo de partição, fuso horário e o valor de TimestampUnit.

Exemplos de sincronização

Modo USER_DEFINE

  1. Crie um tópico no DataHub.

    O schema do tópico deve incluir os campos de partição do MaxCompute, e o tipo deles deve ser STRING.

  2. Grave dados no tópico do DataHub usando o SDK do DataHub.

    Para testes, use o SDK para gravar alguns registros com valores [ds,hh,mm] de [20210304,01,15] e [20210304,02,15].

  3. Crie um conector de sincronização.

    No modo de partição USER_DEFINE, defina os campos de configuração de partição durante a sincronização. Se a tabela correspondente não existir no MaxCompute, ela poderá ser criada automaticamente. Na configuração de campos de importação, especifique que os campos f1 e f2 devem ser sincronizados e exclua o campo f3.

  4. Confirme os dados sincronizados.

    Visualize as informações de sincronização do conector no console do DataHub e consulte os resultados dos dados no MaxCompute.

    No modo USER_DEFINE, o DataHub sincroniza os dados para a partição correspondente com base no valor do campo de agrupamento do MaxCompute.

Modo SYSTEM_TIME

  1. Crie um tópico no DataHub.

    Como as partições são calculadas com base no momento em que os dados são gravados no DataHub, o schema do tópico precisa conter apenas campos de dados, não campos de partição.

  2. Grave dados no tópico do DataHub usando o SDK do DataHub.

    Para testes, use o SDK para gravar alguns registros. Suponha que o horário atual de gravação no DataHub seja 2021-03-04 14:02:45.

  3. Crie um conector de sincronização.

    Certifique-se de que a configuração de partição corresponda às partições na tabela do MaxCompute.

  4. Confirme os dados sincronizados.

    Visualize informações de sincronização, como o DoneTime, para o conector no console do DataHub e consulte os resultados dos dados no MaxCompute.

    No modo SYSTEM_TIME, o DataHub sincroniza os dados para a partição correspondente com base no momento em que os dados foram gravados no DataHub.

Perguntas frequentes

  • Por que um campo de timestamp no MaxCompute exibe uma data como 1970-01-19 após a sincronização?

    • Causa: A unidade de tempo padrão para sincronização do DataHub para o MaxCompute é microssegundos, mas o timestamp gravado no DataHub estava em milissegundos.

    • Solução: Certifique-se de que os timestamps sejam gravados no DataHub em microssegundos.