Avro File Writer
Saiba mais sobre o conector Avro File Writer e como utilizá-lo na Digibee Integration Platform.
O conector Avro File Writer permite que você escreva arquivos Avro com base em schemas Avro.
Avro é um framework para serialização de dados utilizado no ecossistema Hadoop Big Data, conhecido por seu suporte à evolução de schema e compactação. Para mais informações, veja o site oficial.
Parâmetros
Dê uma olhada nos parâmetros de configuração do conector. Parâmetros suportados por expressões Double Braces estão marcados com (DB).
Aba General
File Name (DB)
Nome do arquivo Avro a ser escrito.
file.avro
String
Data (DB)
Dados a serem escritos no arquivo Avro.
Aceita apenas objetos e arrays de objetos JSON.
{{ message.data }}
String
Schema (DB)
O schema Avro a ser utilizado na escrita do arquivo.
Aceita apenas schemas com o tipo RECORD como tipo de dado raiz.
N/A
String
Data From File
Se o parâmetro estiver ativado, os dados a serem escritos no arquivo Avro devem ser informados através de outros arquivos Avro e não via payload JSON.
False
Booleano
Files
Define os arquivos Avro contendo os dados a serem escritos no arquivo Avro final.
Essa opção só está disponível quando Data From File estiver ativado.
N/A
Opções de Data From File
File Name (DB)
Nome do arquivo Avro contendo os dados.
Essa opção só está disponível quando Data From File for habilitado.
N/A
String
Infer Schema From File
Se o parâmetro estiver ativado, o schema Avro será inferido do primeiro arquivo Avro definido no parâmetro Files.
False
Booleano
File Exists Policy
Define qual comportamento a ser seguido quando um arquivo de mesmo nome (File Name) já existir na execução vigente do pipeline.
Você pode escolher as seguintes opções: Append (o arquivo existente é complementado com os dados), Overwrite (sobrescreve o arquivo existente) ou Fail (a execução é interrompida com um erro se o arquivo já existir).
Append
String
Fail On Error
Se a opção estiver ativada, a execução do pipeline com erro será interrompida. Do contrário, a execução do pipeline continua, mas o resultado irá mostrar um valor falso para a propriedade "success".
False
Booleano
Aba Advanced
Compression Codec
O codec de compressão a ser utilizado ao comprimir o arquivo Avro.
Opções:
Uncompressed
DEFLATE
BZIP2
Uncompressed
String
Compression Level
O nível de compressão a ser aplicado ao comprimir o arquivo Avro. Opções: 1-9
Essa opção só está disponível quando Compression Codec for configurado como DEFLATE.
1
Inteiro
Aba Documentação
Documentation
Seção para documentar qualquer informação necessária sobre a configuração do conector e regras de negócio.
N/A
String
Exemplos de uso
Arquivo a partir de um objeto JSON
Escrevendo um arquivo Avro a partir de um objeto JSON como payload:
File Name: file.avro
Data: {{ message.data }}
Schema: {{ message.schema }}
File Exists Policy: Overwrite
Compression Codec: Uncompressed
Dados de exemplo:
{
"data": {
"name": "Aquiles",
"phoneNumbers": [
"11 99999-9999",
"11 93333-3333"
],
"active": true,
"address": "St. Example",
"score": 71.3,
"details": "Some details"
}
}
Schema de exemplo:
{
"schema": {
"type": "record",
"name": "Record",
"fields": [
{
"name": "name",
"type": "string"
},
{
"name": "phoneNumbers",
"type": {
"type": "array",
"items": "string"
}
},
{
"name": "active",
"type": "boolean"
},
{
"name": "address",
"type": "string"
},
{
"name": "score",
"type": "double"
},
{
"name": "details",
"type": [
"string",
"null"
]
}
]
}
}
Saída:
{
"success": true,
"fileName": "file.avro"
}
Arquivo a partir de um array de objetos JSON
Escrevendo um arquivo Avro a partir de um array de objetos JSON como payload:
File Name: file.avro
Data: {{ message.data }}
Schema: {{ message.schema }}
File Exists Policy: Overwrite
Dados de exemplo:
{
"data": [
{
"name": "Aquiles",
"phoneNumbers": [
"11 99999-9999",
"11 93333-3333"
],
"active": true,
"address": "St. Example",
"score": 71.3,
"details": "Some details"
},
{
"name": "Vitor",
"phoneNumbers": [
"11 97777-7777"
],
"active": false,
"address": "St. Example 2",
"score": 80.0,
"details": null
}
]
}
Schema de exemplo:
{
"schema": {
"type": "record",
"name": "Record",
"fields": [
{
"name": "name",
"type": "string"
},
{
"name": "phoneNumbers",
"type": {
"type": "array",
"items": "string"
}
},
{
"name": "active",
"type": "boolean"
},
{
"name": "address",
"type": "string"
},
{
"name": "score",
"type": "double"
},
{
"name": "details",
"type": [
"string",
"null"
]
}
]
}
}
Saída:
{
"success": true,
"fileName": "file.avro"
}
Arquivo Avro não comprimido
Escrevendo um arquivo Avro não comprimido:
File Name: file.avro
Data: {{ message.data }}
Schema: {{ message.schema }}
File Exists Policy: Overwrite
Compression Codec: Uncompressed
Saída:
{
"success": true,
"fileName": "file.avro"
}
Arquivo Avro comprimido
Escrevendo um arquivo Avro comprimido:
File Name: file.avro
Data: {{ message.data }}
Schema: {{ message.schema }}
File Exists Policy: Overwrite
Compression Codec: BZIP2
Saída:
{
"success": true,
"fileName": "file.avro"
}
File Exists Policy como Fail
Escrevendo um arquivo Avro com o mesmo nome de um arquivo já existente no diretório de arquivos do pipeline:
File Name: file.avro
Data: {{ message.data }}
Schema: {{ message.schema }}
File Exists Policy: Fail
Saída:
{
"success": false,
"message": "Something went wrong while trying to execute the Avro Writer connector",
"error": "com.digibee.pipelineengine.exception.PipelineEngineRuntimeException: Avro file file.avro already exists."
}
Escrevendo arquivo a partir de outro arquivo Avro - schema explícito
Escrevendo um arquivo Avro com dados vindo de outro arquivo Avro ao invés de um payload JSON, usando uma configuração de schema explícita:
File Name: file.avro
Data From File: ativado
Files:
File Name: {{ message.existingAvroFile }}
Schema: {{ message.schema }}
File Exists Policy: Overwrite
Saída:
{
"success": true,
"fileName": "file.avro"
}
Escrevendo arquivo a partir de outro arquivo Avro - inferindo schema
Escrevendo um arquivo Avro com dados vindo de outro arquivo Avro ao invés de um payload JSON, inferindo o schema através do arquivo:
File Name: file.avro
Data From File: ativado
Files:
File Name: {{ message.existingAvroFile }}
Infer Schema: ativado
File Exists Policy: Overwrite
Saída:
{
"success": true,
"fileName": "file.avro"
}
Isto foi útil?