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"
}
Atualizado
Isto foi útil?