Skip to main content

Tipos de dados Avro

Use a ferramenta Dados de Entrada para ler arquivos Avro não compactados e compactados por deflate e use a ferramenta Dados de Saída para gravar arquivos Avro.

Entrada

Apenas a compactação do tipo "deflate" é compatível.

A maioria dos 14 tipos de dados Avro nativos são compatíveis. O mapeamento de tipos na importação é o seguinte:

  • String: UTF-8 convertido para V_WString (UTF-16)

  • Bytes: mantido como Blob (use a ferramenta Blob para converter conforme necessário)

  • Int: mantido como Int32

  • Longo: mantido como Int64

  • Float: mantido como Float

  • Double: mantido como Double

  • Booleano: mantido como Bool

  • Nulo: não compatível

  • Enum: convertido para String Equivalent

  • União: o Alteryx tem suporte para uniões com dois subtipos. Ambos os subtipos devem ser equivalentes (por exemplo, ambos "int" ou ambos "double") ou um deles deve ser nulo.

    • O tipo de campo do Alteryx é o tipo do ramo não nulo (ou ambos os ramos, no caso de não serem nulos).

    • Se o ramo não nulo está ativo, o campo do Alteryx contém esse valor.

    • Se o ramo nulo está ativo, o campo do Alteryx é definido como nulo.

    • Uniões inválidas são importadas como JSON em uma V_WString (use a ferramenta Análise JSON para converter conforme necessário). Por exemplo, uma união com um "int" como seu ramo ativo pode ser representada como "{"int":123}".

  • Fixo: mantido como Blob (use a ferramenta Blob para converter conforme necessário)

Esses tipos Avro não são compatíveis nativamente, mas são importados como JSON em uma cadeia de caracteres (usar a ferramenta Análise JSON para converter conforme necessário):

  • Registro: por exemplo, "{"SubField1":7,"SubField2":"Field2"} para um registro contendo campos "int" e "string".

  • Array: por exemplo, "[1,2,3,4,5]" para uma matriz de "ints".

  • Mapa: por exemplo, "{"Key1":Value1,"Key2":Value2}" para um mapa de "string" para "double".

Saída

Ao gravar arquivos Avro, há duas opções:

  1. Habilitar compactação (deflate) : habilitar a compactação aumenta o tempo de saída, mas, com arquivos maiores, também reduz o tempo de rede. A compactação compatível usa o algoritmo DEFLATE (essencialmente gzip) e deve obter suporte nativamente de outras ferramentas capazes de operar no Avro, como a Hive.

  2. Valores nulos com suporte : selecionar esta opção grava os campos "_all_" como uniões com um ramo nulo e um ramo de valor. Se o valor no Alteryx for nulo, a união Avro de saída terá seu ramo nulo selecionado; caso contrário, terá seu ramo de valor selecionado.

    Se esta opção não estiver selecionada, todos os campos de saída serão gravados como seus tipos Avro nativos (não união). Os campos no Alteryx que são nulos são gravados como seu valor padrão (por exemplo, o número 0 para um int32 e uma cadeia de caracteres vazia para um campo de cadeia de caracteres).

    Considere usar uma ferramenta Fórmula para tratar valores nulos com um valor "conhecido" para que eles possam ser manipulados no Hadoop.

O mapeamento de tipos de Alteryx para Avro é o seguinte:

  • Bool: mantido como booleano

  • Byte, Int16, Int32: Int mantido (32 bits)

  • Int64: mantido como longo (64 bits)

  • Float: mantido como Float

  • Double: mantido como Double

  • FixedDecimal: convertido para Double

  • String, V_String, Date, Time, DateTime: mantidos como String (UTF-8)

  • WString, V_WString: convertidos para String (UTF-8)

  • Blob, SpatialBlob: mantidos como bytes