Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do MaxCompute

Última atualização: Jun 27, 2026

A fonte de dados do MaxCompute atua como um hub que oferece um canal bidirecional para leitura e escrita no MaxCompute.

Recursos

Nota

No DataWorks, a fonte de dados do MaxCompute utiliza um endpoint de túnel para acessar o serviço de túnel de um projeto do MaxCompute. Esse recurso permite sincronizar dados enviando-os ou baixando-os do projeto. As operações de envio e download por meio do serviço de túnel envolvem a operação DownloadTable.

Para fontes de dados do MaxCompute criadas após 11 de dezembro de 2023, se o serviço DataWorks e o projeto do MaxCompute de destino estiverem em regiões diferentes, não será possível sincronizar dados diretamente usando um endpoint de túnel. Nesse caso, adquira uma instância do Cloud Enterprise Network (CEN) para estabelecer uma conexão de rede. A sincronização de dados entre regiões só é possível após o estabelecimento dessa conexão. Para obter mais informações sobre o CEN e suas operações, consulte Cloud Enterprise Network (CEN).

Leitura em lote

  • O MaxCompute Reader lê dados de tabelas particionadas e não particionadas, mas não oferece suporte a visualizações virtuais ou tabelas externas.

  • Na leitura em lote de uma tabela particionada do MaxCompute, não configure diretamente o mapeamento de campos para colunas de chave de partição. Para sincronizar valores de chave de partição, adicione um campo personalizado, insira manualmente o nome da partição e configure o mapeamento de campos.

  • Especifique valores de partição usando parâmetros de agendamento para permitir a substituição automática. Assim, os dados da partição correspondente são sincronizados com base no horário do agendamento.

    Por exemplo, considere uma tabela particionada chamada t0 contendo as colunas id e name. A chave de partição de nível 1 é pt e a de nível 2 é ds. Para ler dados da partição onde pt=<data comercial> e ds=hangzhou, especifique os valores de partição como pt=${parâmetro de agendamento} e ds=hangzhou ao configurar a source. Em seguida, configure o mapeamento de colunas para as colunas id e name.

  • Grave colunas de chave de partição em uma tabela de destino adicionando-as como campos personalizados.

  • O MaxCompute Reader oferece suporte à filtragem de dados por meio de uma cláusula WHERE.

Escrita em lote

  • O MaxCompute Writer não oferece suporte ao tipo de dados VARCHAR se os dados de origem contiverem valores nulos.

  • Caso a tabela de destino seja uma DeltaTable, expanda Advanced Configuration e defina Visible After Synchronization como Yes. Caso contrário, a tarefa retornará um erro se a simultaneidade for maior que 1.

  • Não há suporte para sincronização de dados de uma source para uma tabela externa do MaxCompute.

  • Se uma coluna na tabela de destino não estiver mapeada para uma coluna de origem, o Data Integration definirá seu valor como nulo após a sincronização, mesmo que um valor padrão tenha sido especificado durante a criação da tabela.

Escrita em tempo real

  • As tarefas de sincronização em tempo real oferecem suporte a grupos de recursos serverless.

  • Tarefas de sincronização em tempo real não suportam a sincronização de tabelas sem chave primária.

  • Não há suporte para sincronização de dados de uma source para uma tabela externa do MaxCompute.

  • Ao executar a sincronização em tempo real para a fonte de dados padrão do MaxCompute (geralmente odps_first), um par de AccessKey temporário é usado por padrão. Esse par expira após 7 dias, causando falha na tarefa. A plataforma reinicia automaticamente a tarefa ao detectar que a falha foi causada pela expiração do par de AccessKey temporário. Se você tiver configurado regras de monitoramento para esse tipo de alerta, receberá uma notificação.

  • Em tarefas de sincronização em tempo real com um clique para o MaxCompute, apenas dados completos históricos podem ser consultados no dia da configuração. Dados incrementais só estarão disponíveis para consulta no MaxCompute após a conclusão da mesclagem no dia seguinte.

  • Tarefas de sincronização em tempo real com um clique para o MaxCompute geram uma partição completa diariamente. Para evitar uso excessivo de armazenamento, as tabelas do MaxCompute criadas automaticamente por essas tarefas possuem um ciclo de vida padrão de 30 dias. Se isso não atender aos seus requisitos de negócios, clique em no nome da tabela correspondente do MaxCompute durante a configuração da tarefa de sincronização para modificar o ciclo de vida.

  • O Data Integration utiliza o canal de dados de sincronização do mecanismo do MaxCompute para enviar e baixar dados. Para detalhes sobre o SLA desse canal, consulte Visão geral do MaxCompute Tunnel. Avalie suas escolhas tecnológicas de sincronização de dados com base no SLA do canal de sincronização do mecanismo do MaxCompute.

  • Para sincronização em tempo real com um clique para o MaxCompute no modo de instância, o grupo de recursos exclusivo para Data Integration deve ter uma especificação mínima de 8C16G.

  • Apenas fontes de dados personalizadas do MaxCompute na mesma região do workspace atual são suportadas. Projetos do MaxCompute entre regiões podem passar no teste de conectividade, mas, durante a execução da tarefa, um erro indicando que o mecanismo não existe será relatado na fase de criação de tabela no MaxCompute.

  • Quando o MaxCompute é usado como destino para sincronização de banco de dados completo, se o tipo de tabela for uma tabela comum, apenas a sincronização em tempo real com um clique para o MaxCompute e o modo de streaming incremental para sincronização em tempo real de banco de dados completo são suportados. Se o tipo de tabela for Delta Table, tanto a sincronização em tempo real de banco de dados completo quanto a sincronização em tempo real com um clique para o MaxCompute são suportadas.

    Nota

    Ao usar uma fonte de dados personalizada do MaxCompute, o projeto do DataWorks ainda deve estar associado a um mecanismo do MaxCompute. Caso contrário, não será possível criar nós SQL do MaxCompute, o que causa falha na criação do nó de sinalizador de conclusão (done-flag) para sincronização completa.

Tipos de coluna suportados

Os tipos de dados do MaxCompute 1.0, 2.0 e compatíveis com Hive são suportados. As seções a seguir descrevem os tipos de coluna compatíveis com cada edição de tipo de dados.

Colunas suportadas pelos tipos de dados 1.0

Tipo de coluna

Leitura em lote

Escrita em lote

Escrita em tempo real

BIGINT

Suportado

Suportado

Suportado

DOUBLE

Suportado

Suportado

Suportado

DECIMAL

Suportado

Suportado

Suportado

STRING

Suportado

Suportado

Suportado

DATETIME

Suportado

Suportado

Suportado

BOOLEAN

Suportado

Suportado

Suportado

ARRAY

Suportado

Suportado

Suportado

MAP

Suportado

Suportado

Suportado

STRUCT

Suportado

Suportado

Suportado

Colunas suportadas pelos tipos de dados 2.0 e compatíveis com Hive

Tipo de coluna

Leitura em lote (MaxCompute Reader)

Escrita em lote (MaxCompute Writer)

Escrita em tempo real

TINYINT

Suportado

Suportado

Suportado

SMALLINT

Suportado

Suportado

Suportado

INT

Suportado

Suportado

Suportado

BIGINT

Suportado

Suportado

Suportado

BINARY

Suportado

Suportado

Suportado

FLOAT

Suportado

Suportado

Suportado

DOUBLE

Suportado

Suportado

Suportado

DECIMAL(precisão,escala)

Suportado

Suportado

Suportado

VARCHAR(n)

Suportado

Suportado

Suportado

CHAR(n)

Não suportado

Suportado

Suportado

STRING

Suportado

Suportado

Suportado

DATE

Suportado

Suportado

Suportado

DATETIME

Suportado

Suportado

Suportado

TIMESTAMP

Suportado

Suportado

Suportado

BOOLEAN

Suportado

Suportado

Suportado

ARRAY

Suportado

Suportado

Suportado

MAP

Suportado

Suportado

Suportado

STRUCT

Suportado

Suportado

Suportado

Conversão de tipos de dados

A tabela a seguir descreve as conversões de tipos de dados suportadas pelo MaxCompute Reader.

Categoria de tipo

Tipo do Data Integration

Tipo de dados do banco de dados

Inteiro

LONG

BIGINT, INT, TINYINT e SMALLINT

Booleano

BOOLEAN

BOOLEAN

Data e hora

DATE

DATETIME, TIMESTAMP e DATE

Ponto flutuante

DOUBLE

FLOAT, DOUBLE e DECIMAL

Binário

BYTES

BINARY

Complexo

STRING

ARRAY, MAP e STRUCT

Importante

Se uma conversão de dados falhar ou se houver falha na gravação dos dados na fonte de dados de destino, os dados serão tratados como dados sujos. Você pode usar isso em conjunto com o limiar de dados sujos.

Preparações antes da sincronização de dados

Antes de ler ou gravar dados em uma tabela do MaxCompute, ative as propriedades relacionadas conforme necessário.

Conectar ao MaxCompute e ativar configurações no nível do projeto

  • Faça login no cliente do MaxCompute. Para mais informações, consulte Cliente do MaxCompute.

  • Ative as configurações no nível do projeto do MaxCompute: Certifique-se de ter as permissões necessárias. Utilize uma conta Project Owner para realizar as operações relacionadas. Para mais detalhes sobre permissões do MaxCompute, consulte Permissões do MaxCompute.

Ativar a propriedade ACID

Utilize uma conta Project Owner para executar o seguinte comando no cliente e ativar a propriedade ACID. Para mais informações sobre a semântica ACID no MaxCompute, consulte Semântica ACID.

setproject odps.sql.acid.table.enable=true;

(Opcional) Ativar tipos de dados 2.0

Se precisar usar o tipo TIMESTAMP nos tipos de dados 2.0 do MaxCompute, utilize uma conta Project Owner para executar o seguinte comando no cliente e ativar os tipos de dados 2.0.

setproject odps.sql.type.system.odps2=true;

(Opcional) Conceder acesso a contas

Ao associar um recurso de computação do MaxCompute a um workspace, uma fonte de dados do MaxCompute é criada por padrão no DataWorks. Essa fonte pode ser usada para sincronização de dados no workspace atual. Caso deseje sincronizar dados dessa fonte em outro workspace, certifique-se de que a conta de acesso especificada para a fonte de dados no outro workspace tenha as permissões necessárias para acessar o projeto do MaxCompute. Para autorização entre contas, consulte Autorização entre contas.

Criar uma fonte de dados do MaxCompute

Antes de desenvolver uma tarefa de sincronização de dados, crie o projeto do MaxCompute como uma fonte de dados do MaxCompute no DataWorks. Para mais informações, consulte Criar uma fonte de dados do MaxCompute.

Nota
  • Workspaces no modo padrão oferecem isolamento de fontes de dados. Adicione e isole separadamente as fontes de dados para os ambientes de desenvolvimento e produção para proteger seus dados. Para mais informações, consulte Configurar isolamento de fonte de dados.

  • Se a fonte de dados do MaxCompute chamada odps_first em um workspace não foi criada manualmente na página de fontes de dados, ela foi gerada automaticamente para o primeiro mecanismo do MaxCompute associado ao workspace antes da atualização da fonte de dados. Ao realizar a sincronização de dados usando essa fonte, os dados são lidos ou gravados no projeto correspondente do mecanismo do MaxCompute.

    Verifique o nome do projeto do MaxCompute usado pela fonte de dados na página de configuração para confirmar de qual projeto os dados serão efetivamente lidos ou gravados. Para mais informações, consulte Visualizar detalhes da fonte de dados.

Desenvolver tarefas 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.

Configurar uma tarefa de sincronização em lote de tabela única

Configurar uma tarefa de sincronização em tempo real de tabela única

Para o procedimento, consulte Configurar uma tarefa de sincronização em tempo real de tabela única.

Configurar uma tarefa de sincronização de banco de dados completo

Para o procedimento, consulte Sincronizar dados de um banco de dados completo no modo em lote, Sincronizar dados de um banco de dados completo no modo em tempo real e Sincronização em tempo real com um clique para o MaxCompute.

Perguntas frequentes

Para mais perguntas frequentes sobre o Data Integration, consulte Perguntas frequentes do Data Integration.

Apêndice: Exemplos de scripts e descrições de parâmetros

Configurar 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, defina os parâmetros relacionados no script seguindo os requisitos unificados de formato de script. Para mais informações, consulte Configuração no modo script. As informações a seguir descrevem os parâmetros que devem ser configurados para as fontes de dados ao utilizar o editor de código para tarefas de sincronização em lote.

Exemplo de script do Reader

Importante

Remova os comentários do código abaixo antes de executá-lo.

{
    "type":"job",
    "version":"2.0",
    "steps":[
        {
            "stepType":"odps",//The plug-in name.
            "parameter":{
                "partition":[],//The partition from which data is read.
                "isCompress":false,//Specifies whether to compress data.
                "datasource":"",//The data source.
                "column":[//The column information of the source table.
                    "id"
                ],
                "where": "",//The specific WHERE clause content when data filtering by using WHERE is enabled.
                "enableWhere":false,//Specifies whether to enable data filtering by using WHERE.
                "table":""//The table name.
            },
            "name":"Reader",
            "category":"reader"
        },
        { 
            "stepType":"stream",
            "parameter":{
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//The error count.
        },
        "speed":{
            "throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
            "concurrent":1, //The concurrency.
            "mbps":"12"//The throttling rate. 1 mbps = 1 MB/s.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Caso precise especificar o Endpoint do Túnel para o MaxCompute, configure manualmente a fonte de dados no modo script. Substitua "datasource":"", no exemplo anterior pelos parâmetros específicos da fonte de dados. Exemplo:

"accessId":"*******************",
"accessKey":"*******************",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api", 
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com", 
"project":"*****", 

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. O modo script permite adicionar fontes de dados. O valor deste parâmetro deve corresponder exatamente ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela de onde os dados serão lidos. O nome não diferencia maiúsculas de minúsculas.

Sim

Nenhum

partition

Informações da partição dos dados a serem lidos.

  • A configuração de partição do ODPS suporta curingas de shell Linux. * representa zero ou mais caracteres, e ? representa qualquer caractere único.

  • Por padrão, a partição a ser lida deve existir. Caso contrário, a tarefa retornará um erro. Para que a tarefa seja concluída com êxito mesmo quando a partição não existir, mude para o modo script e adicione a configuração "successOnNoPartition": true aos parâmetros do ODPS.

Por exemplo, uma tabela particionada test contém as quatro partições seguintes: pt=1,ds=hangzhou, pt=1,ds=shanghai, pt=2,ds=hangzhou e pt=2,ds=beijing. Configure as opções abaixo para ler dados de diferentes partições:

  • Para ler dados da partição pt=1,ds=hangzhou, defina as informações da partição como "partition":"pt=1,ds=hangzhou".

  • Para ler dados de todas as partições sob pt=1, defina as informações da partição como "partition":"pt=1,ds=*".

  • Para ler dados de todas as partições da tabela test, defina as informações da partição como "partition":"pt=,ds=".

Além disso, defina condições para recuperar dados de partição conforme suas necessidades:

  • Para especificar a partição máxima, adicione a configuração /query/ ds=(select MAX(ds) from DataXODPSReaderPPR).

  • Para filtrar por condição, adicione a condição correspondente /query/ pt+expressão. Por exemplo, /query/ pt>=20170101 and pt<20170110 recupera todos os dados da partição pt a partir de 20170101 até antes de 20170110.

Nota

/query/ indica que o conteúdo subsequente é identificado como uma condição WHERE.

Obrigatório se a tabela for particionada. Não deve ser especificado se a tabela não for particionada.

Nenhum

column

Informações das colunas da tabela de origem do MaxCompute. Por exemplo, se a tabela test tiver as colunas id, name e age:

  • Para ler as colunas id, name e age em sequência, configure "column":["id","name","age"] ou "column":["*"].

    Nota

    Não recomendamos definir a coluna de extração como (*), pois isso lê cada coluna da tabela sequencialmente. Se a ordem das colunas, os tipos de dados ou o número de colunas na tabela mudar, há risco de desalinhamento entre as colunas da tabela de origem e da tabela de destino. Isso pode fazer com que a tarefa retorne resultados incorretos ou falhe.

  • Para ler as colunas name e id em sequência, configure "column":["name","id"].

  • Para adicionar um campo constante às colunas de origem extraídas (para corresponder à ordem das colunas da tabela de destino), por exemplo, se quiser que cada linha de dados extraídos contenha o valor da coluna age, o valor da coluna name, um valor de data constante de 1988-08-08 08:08:08 e o valor da coluna id, configure "column":["age","name","'1988-08-08 08:08:08'","id"]. Coloque o valor da coluna constante entre aspas simples (').

    Internamente, uma constante é identificada verificando se cada coluna configurada está delimitada por ' em ambas as extremidades. Nesse caso, ela é tratada como um campo constante, e seu valor real é o conteúdo após a remoção das marcas '.

    Nota
    • Quando o modo de filtragem de dados é usado (enableWhere=true e where não está vazio), funções do MaxCompute são suportadas em column. No modo sem filtragem de dados, funções do MaxCompute não são suportadas.

    • O parâmetro column deve especificar explicitamente o conjunto de colunas a serem sincronizadas e não pode ficar vazio.

Sim

Nenhum

enableWhere

Especifica se deve usar uma cláusula WHERE para filtragem de dados.

Não

false

where

Conteúdo específico da cláusula WHERE quando a filtragem de dados via WHERE está ativada.

Não

Nenhum

Exemplo de script do Writer

Segue um exemplo de configuração de script.

{ "type":"job", "version":"2.0",//The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"odps",//The plug-in name. "parameter":{ "partition":"",//The partition information. "truncate":true,//The cleanup rule. "isCompress":false,//Specifies whether to compress data. "datasource":"odps_first",//The data source name. "column": [//The source column names. "id", "name", "age", "sex", "salary", "interest" ], "table":""//The table name. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//The error count, which specifies the maximum number of tolerable dirty data records. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1, //The concurrency. "mbps":"12"//The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }

Caso precise especificar o Endpoint do Túnel para o MaxCompute, configure manualmente a fonte de dados no modo script. Substitua "datasource":"", no exemplo anterior pelos parâmetros específicos da fonte de dados. Exemplo:

"accessId":"<yourAccessKeyId>",
 "accessKey":"<yourAccessKeySecret>",
 "endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
 "odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api", 
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com", 
"project":"**********", 

Parâmetros do script do Writer

Parâmetro

Descrição

Obrigatório

Valor padrão

datasource

Nome da fonte de dados. O modo script permite adicionar fontes de dados. O valor deste parâmetro deve corresponder exatamente ao nome da fonte de dados adicionada.

Sim

Nenhum

table

Nome da tabela onde os dados serão gravados. O nome não diferencia maiúsculas de minúsculas. Não é possível especificar múltiplas tabelas.

Sim

Nenhum

partition

Informações da partição da tabela onde os dados serão gravados. Especifique a partição até o último nível. Por exemplo, para gravar dados em uma tabela com três níveis de partições, especifique a partição do último nível, como pt=20150101, type=1, biz=2:

  • Para tabelas não particionadas, não especifique este parâmetro. Isso significa que os dados são importados diretamente para a tabela de destino.

  • O MaxCompute Writer não suporta roteamento de dados para gravação. Para tabelas particionadas, certifique-se de que os dados sejam gravados na partição do último nível.

Obrigatório se a tabela for particionada. Não deve ser especificado se a tabela não for particionada.

Nenhum

column

Lista de colunas a serem importadas. Para importar todas as colunas, configure "column": ["*"]. Para inserir dados em colunas específicas do MaxCompute, especifique as colunas. Por exemplo, "column": ["id","name"]:

  • O MaxCompute Writer suporta filtragem e reordenação de colunas. Por exemplo, se uma tabela tiver três colunas a, b e c, e você quiser sincronizar apenas as colunas c e b, configure "column": ["c","b"]. Durante a importação, a coluna a será definida automaticamente como nula.

  • O parâmetro column deve especificar explicitamente o conjunto de colunas a serem sincronizadas e não pode ficar vazio.

Sim

Nenhum

truncate

Ao definir "truncate": "true", você garante a idempotência da gravação. Quando ocorre uma falha de gravação e a tarefa é reexecutada, o MaxCompute Writer limpa os dados gravados anteriormente e importa os novos dados. Isso garante a consistência dos dados após cada reexecução.

Como o SQL do MaxCompute é usado para limpeza de dados, o SQL não pode garantir atomicidade. Portanto, a opção truncate não é uma operação atômica. Quando várias tarefas limpam partições da mesma Tabela ou Partição simultaneamente, podem ocorrer problemas de sequenciamento de concorrência.

Para evitar esse problema, recomendamos não executar operações DDL na mesma partição com vários jobs simultaneamente, ou criar as partições antes de iniciar múltiplos jobs concorrentes.

Sim

Nenhum

emptyAsNull

Especifica se strings vazias devem ser convertidas para NULL antes da gravação.

Não

false

consistencyCommit

Visível após sincronização.

  • Se definido como Yes (true): Os dados tornam-se visíveis de uma só vez somente após a sincronização bem-sucedida da tarefa. No entanto, se o volume de dados exceder 1 TB, a tarefa de sincronização falhará porque o MaxCompute pode sincronizar no máximo 300.000 blocos.

  • Se definido como No (false): Alguns dados já sincronizados com o MaxCompute podem ser consultados antes da conclusão da tarefa de sincronização. Contudo, a porção visível específica é imprevisível. Consumidores downstream desta tabela devem estar cientes da integridade dos dados.

Não

false