Todos os produtos
Search
Central de documentação

DataWorks:Fonte de dados do MaxCompute

Última atualização: Aug 27, 2026

A fonte de dados do MaxCompute é um hub de dados que oferece um canal bidirecional para leitura e gravação no MaxCompute.

Recursos

Nota

A fonte de dados do MaxCompute no DataWorks usa um tunnel endpoint para acessar o serviço de tunnel de um projeto do MaxCompute. Esse recurso permite sincronizar dados enviando-os ou baixando-os do projeto. As operações de upload e download pelo serviço de tunnel 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 por um endpoint de tunnel. 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 estabelecer essa 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 de 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 com parâmetros de agendamento para permitir a substituição automática. Assim, os dados da partição correspondente são sincronizados conforme o horário do agendamento.

    Por exemplo, considere uma tabela particionada chamada t0 com 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 filtra dados por meio de uma cláusula WHERE.

Gravação em lote

  • O MaxCompute Writer não aceita o tipo de dados VARCHAR se os dados de source contiverem valores nulos.

  • Se a tabela de destino for uma DeltaTable, expanda Advanced Configuration e defina Visible After Synchronization como Yes. Caso contrário, a tarefa reportará 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 source, 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.

  • O MaxCompute Writer não aceita instruções SQL de pré-importação (preSql) ou pós-importação (postSql). Se for necessário execute operações SQL na tabela de destino antes ou depois da gravação dos dados (por exemplo, execute instruções DELETE para remover dados parciais em gravações incrementais), configure um nó SQL upstream ou downstream da tarefa de sincronização de dados para lidar com as operações de pré-processamento ou pós-processamento necessárias.

Gravação em tempo real

  • As tarefas de sincronização em tempo real aceitam serverless resource groups.

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

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

  • Na 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 para o MaxCompute com um clique, 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 para o MaxCompute com um clique 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 modifique o ciclo de vida.

  • O Data Integration utiliza o canal de dados de sincronização do mecanismo MaxCompute para fazer upload e download de dados. Para detalhes sobre o SLA desse canal, consulte MaxCompute Tunnel overview. Avalie suas escolhas tecnológicas de sincronização de dados com base no SLA do canal de sincronização do mecanismo 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á reportado na fase de criação da 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 one-click real-time synchronization to 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 one-click real-time synchronization to MaxCompute são suportados.

    Nota

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

Tipos de coluna suportados

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

Colunas suportadas pelos tipos de dados 1,0

Tipo de coluna

Leitura em lote

Gravação em lote

Gravação 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)

Gravação em lote (MaxCompute Writer)

Gravação 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(precision,scale)

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 combinação 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 MaxCompute. Para mais informações, consulte MaxCompute client.

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

Ativar a propriedade ACID

Use uma conta Project Owner para execute o seguinte comando no cliente e ative a propriedade ACID. Para mais informações sobre a semântica ACID no MaxCompute, consulte ACID semantics.

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 execute o seguinte comando no cliente e ative 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. Se desejar 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 Cross-account authorization.

Crie 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 Create a MaxCompute data source.

Nota
  • Workspaces no modo padrão suportam 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 Configure data source isolation.

  • 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, trata-se de uma fonte criada automaticamente para o primeiro mecanismo MaxCompute associado ao workspace antes do data source upgrade. Ao realizar sincronização de dados usando essa fonte, os dados serão lidos ou gravados no projeto correspondente do mecanismo MaxCompute.

    Visualize o nome do projeto do MaxCompute usado pela fonte de dados na página de configuração da fonte para confirme de qual projeto do MaxCompute os dados serão efetivamente lidos ou gravados. Para mais informações, consulte View data source details.

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.

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

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

Para o procedimento, consulte Configure a single-table real-time synchronization task.

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

Para o procedimento, consulte Synchronize data from a full database in batch mode, Synchronize data from a full database in real-time mode e One-click real-time synchronization to MaxCompute.

Perguntas frequentes

Para mais perguntas frequentes sobre o Data Integration, consulte Data Integration FAQ.

Apêndice: Demonstrações de script e descrições de parâmetros

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

Para configure uma tarefa de sincronização em lote usando o editor de código, defina os parâmetros relacionados no script de acordo com os requisitos unificados de formato de script. Para mais informações, consulte Script mode configuration. As informações a seguir descrevem os parâmetros que devem ser configurados para fontes de dados ao utilizar o editor de código para tarefas de sincronização em lote.

Demonstração 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"
            }
        ]
    }
}

Para especifique o Tunnel Endpoint para o MaxCompute, configure manualmente a fonte de dados no modo de 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 de script permite adicionar fontes de dados. O valor deste parâmetro deve ser idêntico 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 ODPS suporta wildcards de shell Linux. * representa zero ou mais caracteres, e ? representa qualquer caractere único.

  • Por padrão, a partição a ser lida deve existir. Se a partição não existir, a tarefa reportará um erro. Para que a tarefa seja concluída com sucesso mesmo quando a partição não existir, mude para o modo de script e adicione a configuração "successOnNoPartition": true aos parâmetros 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 especifique 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+expression. Por exemplo, /query/ pt>=20170101 and pt<20170110 recupera todos os dados da partição pt em ou após 20170101 e antes de 20170110.

Nota

/query/ indica que o conteúdo seguinte é 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 source 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 source e da tabela de destino. Isso pode causar resultados incorretos ou falha na tarefa.

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

  • Para adicionar um campo constante às colunas de source 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. Quando o modo sem filtragem de dados é usado, funções do MaxCompute não são suportadas.

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

Sim

Nenhum

enableWhere

Especifica se deve ser usada 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

Demonstração 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" } ] } }

Para especifique o Tunnel Endpoint para o MaxCompute, configure manualmente a fonte de dados no modo de 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 de script permite adicionar fontes de dados. O valor deste parâmetro deve ser idêntico 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 especifique várias 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 de ú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 de ú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 insira 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á automaticamente definida como nula.

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

Sim

Nenhum

truncate

Ao definir "truncate": "true", garante-se 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 Table ou Partition simultaneamente, podem ocorrer problemas de sequenciamento de simultaneidade.

Para evitar esse problema, recomenda-se não ter vários jobs executando operações DDL na mesma partição ao mesmo tempo, ou crie as partições antes de iniciar vários jobs simultâneos.

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