A fonte de dados DataHub fornece um canal bidirecional para leitura e gravação de dados no DataHub, viabilizando o processamento eficiente de dados em larga escala. Este tópico descreve as capacidades de sincronização de dados que o DataWorks oferece para o DataHub.
Versões suportadas
-
O DataHub Reader utiliza o DataHub SDK para Java para ler dados do DataHub. O código a seguir apresenta 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 utiliza o DataHub SDK para Java para gravar dados no DataHub. O código a seguir apresenta 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/gravação em batch
O tipo de dados STRING suporta apenas a codificação UTF-8. Uma única coluna STRING não pode ultrapassar 1 MB.
Leitura/gravação em tempo real
As tarefas de sincronização em tempo real suportam serverless resource groups.
Ao sincronizar dados para o DataHub em tempo real, os dados são fragmentados com base no valor de hash dos dados de origem. Registros com o mesmo valor de hash são sincronizados para o mesmo shard.
Gravação full-database em tempo real
Ao executar a tarefa, uma tarefa de sincronização em batch primeiro grava os dados completos no DataHub. Em seguida, uma tarefa de sincronização em tempo real é iniciada, sincronizando os dados incrementais da origem para o destino. Os dados são gravados de acordo com as seguintes regras:
Os dados só podem ser gravados em tópicos DataHub do tipo TUPLE. Para mais informações sobre o tipo de dados TUPLE, consulte Data types.
Ao sincronizar dados para o DataHub em tempo real, cinco campos adicionais são acrescentados aos campos da tabela de source. Também é possível adicionar outros campos ao configure a tarefa. Para mais informações sobre o formato final da mensagem enviada ao DataHub, consulte Appendix: DataHub message formats.
Tipos de campos suportados
Ao sincronizar dados para o DataHub, os valores são mapeados para os tipos de campos 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 ao DataWorks seguindo as instruções em Data source configuration. Para entender o significado dos parâmetros ao adicionar uma fonte de dados, visualize as descrições dos parâmetros no console do DataWorks.
Desenvolver uma tarefa de sincronização de dados
Para obter informações sobre o ponto de entrada e o procedimento de configure de uma tarefa de sincronização, consulte os guias de configure a seguir.
Configure uma tarefa de sincronização em batch para tabela única
Para o procedimento, consulte Configure a batch synchronization task in wizard mode e Configure a batch synchronization task in script mode.
Para todos os parâmetros e demonstrações de script no modo de script, consulte Appendix: Script demos and parameter description abaixo.
Configure uma tarefa de sincronização em tempo real para tabela única
Para o procedimento, consulte Configure a real-time synchronization task.
Para informações sobre as operações suportadas pelos diferentes tipos de dados do DataHub, estratégias de fragmentação, formatos de dados e exemplos de mensagens relacionados, consulte Appendix: DataHub message formats.
Configure uma tarefa de sincronização full-database em tempo real
Para o procedimento, consulte Configure a real-time full-database synchronization task.
Perguntas frequentes
How do I handle write failures when the data volume in a single write to DataHub exceeds the limit?
Apêndice: demonstrações de script e descrição de parâmetros
Configure uma tarefa de sincronização em batch usando o editor de código
Para configure uma tarefa de sincronização em batch com o editor de código, configure os parâmetros relacionados no script conforme os requisitos do formato de script unificado. Para mais informações, consulte Script mode configuration. A seguir, são descritos os parâmetros que devem ser configurados para as fontes de dados ao usar o editor de código para configure uma tarefa de sincronização em batch.
Demonstração do 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 ative throttling. If throttle is defina to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is defina 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 |
O accessKey usado para acessar o DataHub. |
Sim |
|
project |
O nome do projeto DataHub. Um project é a unidade básica de gerenciamento de recursos no DataHub e é usado para isolamento de recursos e controle de acesso. |
Sim |
|
topic |
O nome do topic do DataHub. |
Sim |
|
batchSize |
O número de registros lidos por vez. Valor padrão: 1.024. |
Não |
|
beginDateTime |
O horário de início do consumo de dados. Este parâmetro especifica o limite esquerdo (inclusivo) do intervalo de tempo e deve ser uma string de data/hora no formato yyyyMMddHHmmss. Para implementar a sincronização incremental, use este parâmetro em conjunto com scheduling parameters do DataWorks. Por exemplo, defina o nome do parâmetro do parâmetro de agendamento do nó como bizdate e o valor do parâmetro como $[yyyymmdd-1]. Em seguida, defina beginDateTime como ${bizdate}000000, o que indica que o horário de início do consumo de dados é 00:00:00 do dia anterior. Nota
beginDateTime e endDateTime devem ser usados em conjunto. |
Sim |
|
endDateTime |
O horário de término do consumo de dados. Este parâmetro especifica o limite direito (exclusivo) do intervalo de tempo e deve ser uma string de data/hora no formato yyyyMMddHHmmss. Para implementar a sincronização incremental, use este parâmetro em conjunto com scheduling parameters do DataWorks. Por exemplo, defina o nome do parâmetro do parâmetro de agendamento do nó como bizdate e o valor do parâmetro como $[yyyymmdd-1]. Em seguida, defina endDateTime como ${bizdate}235959, o que indica que o horário de término do consumo de dados é 23:59:59 do dia anterior. Nota
beginDateTime e endDateTime devem ser usados em conjunto. |
Sim |
Demonstração do 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. Defina this parameter based on the average size per record multiplied by 10.000. For example, if each record is 10 KB, defina 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 ative throttling. If throttle is defina to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is defina 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 |
O accessKey do DataHub. |
Sim |
N/A |
|
endPoint |
Para acessar recursos do DataHub, selecione o nome de domínio correto de acordo com o service ao qual o recurso pertence. |
Sim |
N/A |
|
maxRetryCount |
O número máximo de novas tentativas em caso de falha na tarefa. |
Não |
N/A |
|
mode |
O modo de gravação quando o valor é do tipo STRING. |
Sim |
N/A |
|
parseContent |
O conteúdo a ser analisado. |
Sim |
N/A |
|
project |
Um project é a unidade organizacional básica dos dados do DataHub. Cada project contém múltiplos topics. Nota
Os projects do DataHub são independentes dos projects do MaxCompute. Projects criados no MaxCompute não podem ser reutilizados no DataHub. É necessário crie os projects separadamente. |
Sim |
N/A |
|
topic |
Um topic é a menor unidade de assinatura e publicação no DataHub. Use um topic para representar um tipo ou categoria de dados de streaming. |
Sim |
N/A |
|
maxCommitSize |
Para melhorar a eficiência de gravação, o DataX acumula dados em um buffer e os confirma em lote 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 requisição a 10.000 registros; ultrapassar esse limite causa um erro na tarefa. Defina este parâmetro com base no tamanho médio de cada registro multiplicado por 10.000, a fim de controlar o número de registros gravados no DataHub por requisição. |
Não |
1MB |