A fonte de dados DataHub oferece um canal bidirecional para leitura e gravação de dados no DataHub, permitindo o processamento eficiente de dados em grande escala. Este tópico descreve as capacidades de sincronização de dados que o DataWorks fornece para o DataHub.
Versões suportadas
-
O DataHub Reader usa o SDK do DataHub para Java para ler dados do DataHub. O código a seguir mostra a versão do SDK.
<dependency> <groupId>com.aliyun.DataHub</groupId> <artifactId>aliyun-sdk-DataHub</artifactId> <version>2.9.1</version> </dependency> -
O DataHub Writer usa o SDK do DataHub para Java para gravar dados no DataHub. O código a seguir mostra a versão do SDK.
<dependency> <groupId>com.aliyun.datahub</groupId> <artifactId>aliyun-sdk-datahub</artifactId> <version>2.5.1</version> </dependency>
Limitações
Leitura e gravação em lote
O tipo de dado STRING suporta apenas codificação UTF-8. Uma única coluna STRING não pode exceder 1 MB.
Leitura e gravação em tempo real
As tarefas de sincronização em tempo real suportam grupos de recursos serverless.
Ao sincronizar dados para o DataHub em tempo real, os dados são fragmentados com base no valor de hash dos dados de source. Registros com o mesmo valor de hash são sincronizados para o mesmo shard.
Gravação completa de banco de dados em tempo real
Ao executar a tarefa, uma tarefa de sincronização em lote grava primeiro todos os dados no DataHub. Em seguida, uma tarefa de sincronização em tempo real é iniciada, sincronizando os dados incrementais da source para o destino. A gravação dos dados segue as regras abaixo:
A gravação de dados é permitida apenas em tópicos do DataHub do tipo TUPLE. Para mais informações sobre o tipo de dado TUPLE, consulte Tipos de dados.
Durante a sincronização de dados para o DataHub em tempo real, cinco campos adicionais são anexados aos campos da tabela de source. Também é possível adicionar outros campos ao configurar a tarefa. Para mais detalhes sobre o formato final da mensagem enviada ao DataHub, consulte Apêndice: Formatos de mensagem do DataHub.
Tipos de campo suportados
Na sincronização de dados para o DataHub, os valores são mapeados para os tipos de campo correspondentes. O DataHub suporta apenas os tipos de dados BIGINT, STRING, BOOLEAN, DOUBLE, TIMESTAMP e DECIMAL.
Adicionar uma fonte de dados
Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. Consulte as descrições de parâmetros no console do DataWorks para compreender o significado de cada parâmetro ao adicionar uma fonte de dados.
Desenvolver uma tarefa de sincronização de dados
Para obter 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 uma tarefa de sincronização em lote no modo assistente e Configure uma tarefa de sincronização em lote no modo script.
Para todos os parâmetros e exemplos de script para configuração no modo script, consulte Apêndice: Exemplos de script e descrição de parâmetros abaixo.
Configure uma tarefa de sincronização em tempo real de tabela única
Para o procedimento, consulte Configure uma tarefa de sincronização em tempo real.
Para informações sobre operações suportadas por diferentes tipos de dados do DataHub, estratégias de sharding, formatos de dados e exemplos de mensagens relacionados, consulte Apêndice: Formatos de mensagem do DataHub.
Configure uma tarefa de sincronização completa de banco de dados em tempo real
Para o procedimento, consulte Configure uma tarefa de sincronização completa de banco de dados em tempo real.
Perguntas frequentes
Apêndice: Exemplos de script e descrição 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 relevantes no script conforme 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
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "job": { "content": [ { "reader": { "name": "DataHubreader", "parameter": { "endpoint": "xxx" // The endpoint of DataHub. "accessId": "xxx", // The AccessKey ID used to access DataHub. "accessKey": "xxx", // The AccessKey secret used to access DataHub. "project": "xxx", // The name of the DataHub project. "topic": "xxx" // The name of the DataHub topic. "batchSize": 1000, // The number of records to read at a time. "beginDateTime": "20180910111214", // The start time for data consumption. "endDateTime": "20180910111614", // The end time for data consumption. "column": [ "col0", "col1", "col2", "col3", "col4" ] } }, "writer": { "name": "streamwriter", "parameter": { "print": false } } } ] } } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// Specifies whether to enable throttling. If throttle is set to false, the mbps parameter does not take effect, which means 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" } ] } }
Parâmetros do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
|
endpoint |
O endpoint do DataHub. |
Sim |
|
accessId |
O accessId usado para acessar o DataHub. |
Sim |
|
accessKey |
A accessKey usada para acessar o DataHub. |
Sim |
|
project |
Nome do projeto do DataHub. Um project é a unidade básica de gerenciamento de recursos no DataHub, utilizado para isolamento de recursos e controle de acesso. |
Sim |
|
topic |
Nome do topic do DataHub. |
Sim |
|
batchSize |
Número de registros a serem lidos por vez. Valor padrão: 1.024. |
Não |
|
beginDateTime |
Hora de início do consumo de dados. Este parâmetro define o limite inferior (inclusivo) do intervalo de tempo e deve ser uma string de tempo no formato yyyyMMddHHmmss. Para implementar sincronização incremental, utilize este parâmetro em conjunto com os parâmetros de agendamento do DataWorks. Por exemplo, defina o nome do parâmetro de agendamento do nó como bizdate e o valor do parâmetro como $[yyyymmdd-1]. Em seguida, configure beginDateTime como ${bizdate}000000, indicando que a hora de início do consumo de dados é 00:00:00 do dia anterior. Nota
Os parâmetros beginDateTime e endDateTime devem ser usados em conjunto. |
Sim |
|
endDateTime |
Hora de término do consumo de dados. Este parâmetro define o limite superior (exclusivo) do intervalo de tempo e deve ser uma string de tempo no formato yyyyMMddHHmmss. Para implementar sincronização incremental, utilize este parâmetro em conjunto com os parâmetros de agendamento do DataWorks. Por exemplo, defina o nome do parâmetro de agendamento do nó como bizdate e o valor do parâmetro como $[yyyymmdd-1]. Em seguida, configure endDateTime como ${bizdate}235959, indicando que a hora de término do consumo de dados é 23:59:59 do dia anterior. Nota
Os parâmetros beginDateTime e endDateTime devem ser usados em conjunto. |
Sim |
Exemplo de script do Writer
{ "type": "job", "version": "2.0",// The version number. "steps": [ { "stepType": "stream", "parameter": {}, "name": "Reader", "category": "reader" }, { "stepType": "datahub",// The plug-in name. "parameter": { "datasource": "",// The data source. "topic": "",// A topic is the smallest unit for subscription and publishing in DataHub. You can use a topic to represent a type or category of streaming data. "maxRetryCount": 500,// The maximum number of retries upon task failure. "maxCommitSize": 1048576// The data is committed in batches to the destination when the accumulated data buffer reaches the maxCommitSize (in bytes). // DataHub limits a single request to 10.000 records. Exceeding this limit causes a task error. Set this parameter based on the average size per record multiplied by 10.000. For example, if each record is 10 KB, set this parameter to a value lower than 10 × 10.000 KB. }, "name": "Writer", "category": "writer" } ], "setting": { "errorLimit": { "record": ""// The error count. }, "speed": { "throttle":true,// Specifies whether to enable throttling. If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":20, // The concurrency. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] } }
Parâmetros do script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
accessId |
O accessId do DataHub. |
Sim |
N/A |
|
accessKey |
A accessKey do DataHub. |
Sim |
N/A |
|
endPoint |
Para acessar recursos do DataHub, selecione o nome de domínio correto com base no serviço ao qual o recurso pertence. |
Sim |
N/A |
|
maxRetryCount |
Número máximo de tentativas em caso de falha na tarefa. |
Não |
N/A |
|
mode |
Modo de gravação quando o valor é do tipo STRING. |
Sim |
N/A |
|
parseContent |
Conteúdo a ser analisado. |
Sim |
N/A |
|
project |
Um projeto é a unidade organizacional básica para dados no DataHub e contém múltiplos tópicos. Nota
Os projetos do DataHub são independentes dos projetos do MaxCompute. Projetos criados no MaxCompute não podem ser reutilizados no DataHub. Crie os projetos separadamente. |
Sim |
N/A |
|
topic |
Um tópico é a menor unidade para assinatura e publicação no DataHub. Utilize um tópico para representar um tipo ou categoria de dados em streaming. |
Sim |
N/A |
|
maxCommitSize |
Para melhorar a eficiência de gravação, o DataX acumula dados em um buffer e os envia em lotes para o destino quando o volume acumulado atinge o maxCommitSize (em bytes). O valor padrão é 1.048.576, equivalente a 1 MB. O DataHub limita uma única solicitação a 10.000 registros; ultrapassar esse limite causa erro na tarefa. Configure este parâmetro com base no tamanho médio por registro multiplicado por 10.000 para controlar a quantidade de registros gravados no DataHub por solicitação. |
Não |
1MB |