A fonte de dados do MaxCompute é um hub de dados que oferece um canal bidirecional para leitura e gravação no MaxCompute.
Recursos
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.
NotaAo 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 |
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.
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
Para o procedimento, consulte Configure a batch synchronization task in wizard mode e Configure a batch synchronization task in script mode.
Para uma lista completa de parâmetros e demonstrações de script para o modo de script, consulte Appendix: Script demos and parameter descriptions.
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
Notes for adding a row or column in the column mapping when reading MaxCompute (ODPS) table data
How do I synchronize partition columns when reading MaxCompute (ODPS) table data?
How do I synchronize data from multiple partitions when reading MaxCompute (ODPS) table data?
How to implement column filtering, reordering, and null filling for MaxCompute
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
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.
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 source do MaxCompute. Por exemplo, se a tabela test tiver as colunas id, name e age:
|
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
|
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 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.
|
Não |
false |