O DataWorks oferece o Azure Blob Storage Reader e o Azure Blob Storage Writer para ler e gravar dados em arquivos armazenados no Azure Blob Storage. Use o Azure Blob Storage Reader para acessar arquivos, analisar seu conteúdo e sincronizar os dados com um destino. Use também o Azure Blob Storage Writer para gravar dados de qualquer source no Azure Blob Storage. Este tópico descreve os recursos de sincronização de dados com fontes do Azure Blob Storage.
Limitações
A fonte de dados do Azure Blob Storage aceita os seguintes tipos de dados.
|
Tipo de dado |
Descrição |
|
STRING |
Texto. |
|
LONG |
Inteiro. |
|
BYTES |
Array de bytes. O texto lido é convertido em um array de bytes com codificação UTF-8. |
|
BOOL |
Booleano. |
|
DOUBLE |
Ponto flutuante. |
|
DATE |
Data e hora. Formatos aceitos:
|
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 Data source configuration. Consulte as descrições dos parâmetros no console do DataWorks para compreender o significado de cada campo 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 abaixo.
Configure uma tarefa de sincronização em lote para uma única tabela
Siga o procedimento descrito em Configure a synchronization task in the codeless UI e Configure a synchronization task by using the code editor.
Para visualizar todos os parâmetros e um exemplo de script no editor de código, consulte Appendix: Script demo and parameter description abaixo.
Apêndice: Exemplo de script e descrição de parâmetros
Configure uma tarefa de sincronização em lote pelo editor de código
Ao configurar 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. Para mais detalhes, veja Script mode configuration. As seções a seguir detalham os parâmetros obrigatórios para as fontes de dados nesse modo de configuração.
Exemplo de script do Reader
Abaixo está um exemplo de configuração no editor de código para ler dados do Azure Blob Storage. O lado do Writer usa stream como marcador de posição. Substitua-o pela configuração real da fonte de dados de destino.
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "azureblob",
"parameter": {
"datasource": "",
"object": ["f/z/1.csv"],
"fileFormat": "csv",
"encoding": "utf8/gbk/...",
"fieldDelimiter": ",",
"useMultiCharDelimiter": true,
"lineDelimiter": "\n",
"skipHeader": true,
"compress": "zip/gzip",
"column": [
{
"index": 0,
"type": "long"
},
{
"index": 1,
"type": "boolean"
},
{
"index": 2,
"type": "double"
},
{
"index": 3,
"type": "string"
},
{
"index": 4,
"type": "date"
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 1
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
datasource |
Nome da fonte de dados. O editor de código permite adicionar fontes de dados. O valor deste parâmetro deve corresponder exatamente ao nome da fonte de dados adicionada. |
Sim |
N/A |
|
fileFormat |
Tipo do arquivo de source. Valores válidos: |
Sim |
N/A |
|
object |
Caminho do arquivo. Usado quando fileFormat é definido como csv, text, json ou jsonl. Nota
Este parâmetro aceita o caractere curinga Por exemplo, para sincronizar os arquivos |
Sim Obrigatório quando fileFormat é csv, text, json ou jsonl. |
Nenhum |
|
path |
Caminho do arquivo. Usado quando fileFormat é definido como parquet ou orc. Nota
Este parâmetro aceita o caractere curinga Por exemplo, para sincronizar os arquivos |
Sim Obrigatório quando fileFormat é parquet ou orc. |
Nenhum |
|
column |
Lista de campos a serem lidos. O parâmetro type especifica o tipo de dado da source:
Por padrão, todos os dados podem ser lidos como STRING. Exemplo de configuração:
Também é possível especificar informações detalhadas das colunas. Exemplo:
Nota
Nas informações de column especificadas, o campo type é obrigatório. Para o formato CSV/TEXT, defina index ou value. Para JSON/JSONL, defina jsonPath ou value. |
Sim |
Todos os dados são lidos como STRING. |
|
fieldDelimiter |
Delimitador de campo usado na leitura dos dados. Nota
|
Sim |
, |
|
lineDelimiter |
Delimitador de linha usado na leitura dos dados. Nota
Este parâmetro tem efeito apenas quando fileFormat é definido como text. |
Não |
N/A |
|
compress |
Tipo de compressão para arquivos de texto. Por padrão, este parâmetro fica vazio, indicando ausência de compressão. Os tipos aceitos são |
Não |
Sem compressão |
|
encoding |
Configuração de codificação para leitura dos arquivos. |
Não |
utf-8 |
|
nullFormat |
Strings padrão não conseguem definir null (ponteiro nulo) em arquivos de texto. O sistema de sincronização de dados oferece o nullFormat para determinar quais strings representam null. Exemplos:
|
Não |
N/A |
|
skipHeader |
Em arquivos CSV, use skipHeader para indicar se o cabeçalho deve ser lido.
Nota
O parâmetro skipHeader não é aceito no modo de arquivo compactado. |
Não |
false |
|
parquetSchema |
Configure este parâmetro ao ler dados do Azure Blob Storage no formato Parquet. Ele só tem efeito quando fileFormat é definido como parquet e especifica a descrição de tipos do armazenamento Parquet. Certifique-se de que a configuração geral obedeça à sintaxe JSON após definir parquetSchema.
O formato de configuração do parquetSchema segue as regras abaixo:
Veja um exemplo de configuração abaixo.
|
Não |
N/A |
|
csvReaderConfig |
Configurações de parâmetros para leitura de arquivos CSV. O valor é do tipo Map. O CsvReader lê arquivos CSV e, se este parâmetro não for configurado, os valores padrão serão aplicados. |
Não |
N/A |
|
maxRetryTimes |
Número máximo de tentativas caso o download de um arquivo falhe. Nota
|
Não |
0 |
|
retryIntervalSeconds |
Intervalo entre novas tentativas quando o download de um arquivo falhar. Unidade: segundos. Nota
Este parâmetro só pode ser configurado no modo de editor de código. Não é aceito na interface visual sem código. |
Não |
5 |
Exemplo de script do Writer
O exemplo abaixo mostra uma configuração no modo script para gravar dados no Azure Blob Storage. O lado do Reader usa stream como marcador de posição. Substitua-o pela configuração real da fonte de dados de source.
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "azureblob",
"parameter": {
"datasource": "",
"fileFormat": "csv",
"object": "dir/example.csv",
"fieldDelimiter": ",",
"lineDelimiter": "\n",
"encoding": "UTF-8",
"nullFormat": "null",
"dateFormat": "yyyy-MM-dd",
"writeMode": "truncate",
"maxFileSize": 100,
"writeSingleObject": false
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 1
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
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. A fonte de dados deve estar configurada com a URL SAS e a assinatura (sig) do contêiner do Azure Blob Storage. |
Sim |
N/A |
|
object |
Nome do arquivo onde o Azure Blob Storage Writer gravará os dados, incluindo o prefixo do caminho. Diretórios são simulados por meio de nomes de arquivo, usando a barra (/) como delimitador.
|
Sim |
N/A |
|
writeMode |
Define como o Azure Blob Storage Writer trata dados existentes antes da gravação:
|
Sim |
Nenhum |
|
writeSingleObject |
Indica se os dados devem ser gravados em um único arquivo:
Nota
Este parâmetro não tem efeito na gravação de dados nos formatos Parquet ou ORC. |
Não |
false |
|
fileFormat |
Formato de gravação dos arquivos. Valores válidos:
|
Não |
text |
|
fieldDelimiter |
Delimitador de campo usado na gravação. Válido para os formatos csv e text. Se não for especificado, a vírgula (,) será usada como padrão. Para delimitadores invisíveis, insira a codificação Unicode, como |
Não |
, |
|
encoding |
Codificação do arquivo de saída. |
Não |
utf-8 |
|
nullFormat |
Null (ponteiro vazio) não pode ser definido por strings padrão em arquivos de texto. O sistema de sincronização fornece o parâmetro nullFormat para indicar quais strings devem ser tratadas como null. Por exemplo, ao configurar |
Não |
\N |
|
dateFormat |
Formato utilizado para formatar dados do tipo data. |
Não |
|
|
header |
Cabeçalho do arquivo de saída. Exemplo: |
Não |
N/A |
|
blockSizeInMB |
Tamanho de cada bloco em MB durante o upload fragmentado de dados Block Blob. O Azure Block Blob aceita até 50.000 blocos, com tamanho individual entre 4 MB e 100 MB. Se o número de blocos exceder o limite, aumente o tamanho do bloco para permitir uploads de arquivos maiores. Nota Este parâmetro é aceito apenas no modo avançado, não estando disponível na interface visual sem código. Tem efeito apenas nos formatos text, csv e jsonl. |
Não |
64 |
|
parquetSchema |
Parâmetro necessário para gravação no formato Parquet. Descreve a estrutura do arquivo de destino e só tem efeito quando fileFormat é definido como parquet. O formato segue as regras abaixo. O formato de configuração do parquetSchema é descrito a seguir:
Veja um exemplo de configuração abaixo.
|
Não |
N/A |
|
column |
Informações das colunas de destino configuradas ao gravar dados nos formatos Parquet ou ORC. Formato: |
Não |
N/A |
|
compress |
Formato de compressão para gravação de arquivos Parquet ou ORC, como |
Não |
N/A |
|
maxRetryTimes |
Número máximo de tentativas em caso de falha na gravação, incluindo upload de blocos, confirmação de listas de blocos e exclusão de objetos. Defina como 0 para desativar novas tentativas. Nota Este parâmetro está disponível apenas no modo script e não pode ser configurado na interface visual sem código. |
Não |
30 |
|
retryIntervalSeconds |
Intervalo entre tentativas após falhas na gravação. Unidade: segundos. Disponível apenas no modo script, não podendo ser configurado na interface visual sem código. |
Não |
5 |
|
requestTimeoutSeconds |
Tempo limite para uma única requisição. Unidade: segundos. Disponível apenas no modo script, não podendo ser configurado na interface visual sem código. |
Não |
60 |