Avro File Writer

Saiba mais sobre o conector Avro File Writer e como utilizá-lo na Digibee Integration Platform.

O Avro File Writer é um conector exclusivo do Pipeline Engine v2.

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

ParâmetroDescriçãoValor padrãoTipo de dado

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

ParâmetroDescriçãoValor padrãoTipo de dado

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

ParâmetroDescriçãoValor padrãoTipo de dado

Documentation

Seção para documentar qualquer informação necessária sobre a configuração do conector e regras de negócio.

N/A

String

Note que podem ocorrer diferenças de performance ao escrever arquivos Avro comprimidos e não comprimidos. Como a compressão exige um maior consumo de memória e processamento, é importante validar os limites que o pipeline irá suportar ao aplicá-la.

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