Types de données Avro

Utilisez la Outil Entrée de données pour lire les fichiers Avro non compressés et dégonflés et utiliser le Outil Sortie de données pour écrire des fichiers Avro.

Entrée

Seule la compression Deflate est prise en charge.

La plupart des 14 types de données Avro natifs sont pris en charge. La concordance des types pour l’importation est la suivante :

  • Chaîne: UTF-8 converti en V_WString (UTF-16)
  • Octets: maintenu en tant que BLOB (utilisez l'outil BLOB pour les convertir si nécessaire)
  • Int: maintenu en tant que Int32
  • Long: maintenu en tant que Int64
  • Float: maintenu comme float
  • Double: maintenue en double
  • Boolean: maintenu comme bool
  • NULL: non pris en charge
  • Enum: converti en équivalent de chaîne
  • Union: Alteryx soutient les unions avec deux sous-types. Les deux sous-types doivent être équivalents (par exemple, deux « int » ou deux « Double ») ou l’un d’eux doit être Null.
    • Le type de champ Alteryx est celui de la branche non Null (ou les deux branches si les deux sont non Null).
    • Si la branche non Null est active, le champ Alteryx contient cette valeur.
    • Si la branche Null est active, le champ Alteryx est défini sur Null.
    • Les unions invalides sont importées en tant que JSON dans un champ V_WString (utilisez l’outil Analyse JSON pour convertir si nécessaire). Par exemple, une union avec un champ int en tant que branche active peut être représentée comme « {“int”:123} ».
  • Correction: maintenue en tant que BLOB (utilisez l'outil BLOB pour convertir au besoin)

Les types Avro suivants ne sont pas pris en charge nativement, mais sont importés en tant que JSON dans une chaîne (utilisez la Outil Interpréter JSON à convertir si nécessaire):

  • Enregistrement: par exemple, "{" SubField1 ": 7," SubField2 ":" champ2 "} pour un enregistrement contenant à la fois des champs int et String
  • Array: par exemple, "[1, 2, 3, 4, 5]" pour un tableau de ints
  • Map: par exemple, "{" Key1 ": value1," key2 ": value2}" pour une carte de chaîne à doubler

Sortie

Pendant l’écriture des fichiers Avro, deux options sont possibles :

  1. Activer la compression (dégonfler): l' activation de la compression augmentera le temps de sortie mais, avec des fichiers plus volumineux, réduira également le temps réseau. La compression utilise l’algorithme DEFLATE (essentiellement gzip) qui doit être pris en charge en mode natif par les autres outils compatibles Avro tels que Hive.
  2. Prise en charge des valeurs NULL: la sélection de cette option écrira les champs _all_ en tant que syndicats avec une branche null et une branche valeur. Si la valeur Alteryx est nulle, la branche nulle est sélectionnée sur l’union de sortie Avro, sinon la branche valeur est sélectionnée.
  3. Si cette option n’est pas sélectionnée, tous les champs de sortie sont écrits dans leur type Avro natif (sans union).  Les champs Alteryx nuls sont écrits avec leur valeur par défaut (par exemple, le chiffre 0 pour un int32 et une chaîne vide pour un champ de chaîne).

    Envisager d'utiliser un Outil Formule pour gérer les valeurs NULL avec une valeur «connue» afin qu'elles puissent être gérées dans Hadoop.

La concordance des types entre Alteryx et Avro est la suivante :

  • Bool: maintenu comme booléen
  • Byte, Int16, Int32: maintenu int (32 bits)
  • Int64: maintenu en tant que long (64 bits)
  • Float: maintenu comme float
  • Double: maintenue en double
  • FixedDecimal: converti en double
  • String, V_String, date, Time, DateTime: maintenu en tant que chaîne (UTF-8)
  • WString, V_WString: converti en chaîne (UTF-8)
  • BLOB, SpatialBlob: maintenu en octets