A fonte de dados do MaxCompute atua como um hub que oferece um canal bidirecional para leitura e escrita no MaxCompute.
Recursos
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.
NotaAo 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 |
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.
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
Para o procedimento, consulte Configurar uma tarefa de sincronização em lote no modo assistente e Configurar uma tarefa de sincronização em lote no modo script.
Para uma lista completa de parâmetros e exemplos de scripts para o modo script, consulte Apêndice: Exemplos de scripts e descrições de parâmetros.
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
Como sincronizo colunas de partição ao ler dados de tabela do MaxCompute (ODPS)?
Como sincronizo dados de várias partições ao ler dados de tabela do MaxCompute (ODPS)?
Como implementar filtragem de colunas, reordenação e preenchimento de nulos para o MaxCompute
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
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.
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:
Além disso, defina condições para recuperar dados de partição conforme suas necessidades:
Nota
|
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:
|
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
|
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
|
Sim |
Nenhum |
|
truncate |
Ao definir 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.
|
Não |
false |