Tipos de dados Avro

Uso do Ferramenta Dados de entrada para ler arquivos Avro compactados e desinflados e usar o Ferramenta Dados de saída para escrever arquivos Avro.

Entrada

Somente a compressão de desinflar é suportado.

A maioria dos 14 nativos Avro tipos de dados são suportados. O mapeamento de tipo na importação de é da seguinte maneira:

  • Seqüência de caracteres: UTF-8 convertido em V_WString (UTF-16)
  • Bytes: mantido como BLOB (use ferramenta blob para converter conforme necessário)
  • Int: mantido como Int32
  • Longo: mantido como Int64
  • Float: mantido como float
  • Dobro: mantido como o dobro
  • Boolean: mantido como bool
  • NULL: não suportado
  • Enum: convertido em String equivalente
  • União: Alteryx oferece suporte a uniões com dois subtipos. Ambos os subtipos devem ser equivalentes (por exemplo, ambos int ou ambos Double) ou um deles deve ser NULL.
    • O tipo de campo Alteryx será o tipo da ramificação não-nula (ou ambas as ramificações no caso que ambos são não-NULL)
    • Se a ramificação não-nula estiver ativa, o campo Alteryx conterá esse valor
    • Se a ramificação nula estiver ativa, o campo Alteryx será definido como NULL
    • Uniões inválidas são importadas como JSON em um V_WString (use a ferramenta de análise JSON para converter conforme necessário). Por exemplo, uma União com um int como sua ramificação ativa pode ser representada como "{" int ": 123}".
  • Corrigido: mantido como BLOB (use ferramenta blob para converter conforme necessário)

O seguinte Avro tipos não são suportados nativamente, mas são importados como JSON em uma seqüência de caracteres (use o Ferramenta Análise JSON para converter conforme necessário):

  • Registro: por exemplo, "{" SubField1 ": 7," SubField2 ":" campo2 "} para um registro contendo ambos os campos int e String
  • Array: por exemplo, "[1, 2, 3, 4, 5]" para uma matriz de inteiros
  • MAP: por exemplo, "{" key1 ": value1," Key2 ": value2}" para um mapa de cadeia de caracteres para Double

Saída

Ao escrever arquivos Avro, existem duas opções:

  1. Ativar compressão (desinflar): ativar a compressão aumentará o tempo de saída mas, com arquivos maiores, também reduzirá o tempo de rede. A compressão com suporte usa o algoritmo Deflate (essencialmente gzip) e deve ser suportado nativamente por outras ferramentas capazes de Avro, como Hive.
  2. Suporte valores nulos: a seleção dessa opção escreverá campos _all_ como uniões com uma ramificação nula e uma ramificação de valor. Se o valor Alteryx for NULL, a saída Avro Union terá sua ramificação nula selecionada, caso contrário, ele terá sua ramificação de valor selecionada.
  3. Se essa opção não estiver selecionada, todos os campos de saída serão gravados como seus tipos nativos de Avro (não-União).  Os campos Alteryx que são nulos serão gravados como seu valor padrão (por exemplo, o número 0 para um Int32 e uma seqüência de caracteres vazia para um campo de cadeia de caracteres).

    Considere o uso de um Ferramenta Fórmula para lidar com valores nulos com um valor ' conhecido ' para que eles possam ser tratados em Hadoop.

O mapeamento de tipo de Alteryx para Avro é da seguinte maneira:

  • Bool: mantido como Boolean
  • Byte, Int16, Int32: mantido int (32-bit)
  • Int64: mantido como longo (64-bit)
  • Float: mantido como float
  • Dobro: mantido como o dobro
  • FixedDecimal: convertido em Double
  • String, V_String, Date, time, DateTime: mantido como String (UTF-8)
  • WString, V_WString: convertido em String (UTF-8)
  • BLOB, SpatialBlob: mantidos como bytes