Référence relative aux propriétés SerDe Amazon Ion
Cette rubrique contient des informations sur les propriétés SerDe pour les instructions CREATE TABLE dans Athena. Pour de plus amples informations et des exemples d'utilisation des propriétés Amazon Ion SerDe, consultez SerDe properties
Spécification des propriétés SerDe Amazon Ion
Pour spécifier les propriétés du SerDe Amazon Ion Hive dans votre instruction CREATE TABLE, utilisez la clause WITH SERDEPROPERTIES. Étant donné que WITH
SERDEPROPERTIES est un sous-champ de la clause ROW FORMAT SERDE, vous devez spécifier ROW FORMAT SERDE et le chemin d'accès de classe SerDe Amazon Ion Hive en premier, comme le montre la syntaxe suivante.
... ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'property' = 'value', 'property' = 'value', ... )
Remarque : bien que la clause ROW FORMAT SERDE est obligatoire si vous voulez utiliser WITH SERDEPROPERTIES, vous pouvez utiliser STORED AS ION ou le plus long INPUTFORMAT et la syntaxe OUTPUTFORMAT pour spécifier le format Amazon Ion.
Propriétés SerDe Amazon Ion
Voici les propriétés SerDe Amazon Ion qui peuvent être utilisées dans les instructions CREATE
TABLE dans Athena.
- ion.codage
-
Facultatif
Par défaut :
BINARYValeurs:
BINARY,TEXTCette propriété déclare si les nouvelles valeurs ajoutées sont sérialisées en tant que binaire Amazon Ion
ou au format texte Amazon Ion. L'exemple de propriété SerDe suivant spécifie le format de texte Amazon Ion.
'ion.encoding' = 'TEXT' - ion.fail_on_overflow
-
Facultatif
Par défaut :
trueValeurs:
true,falseAmazon Ion autorise des types numériques de taille arbitraire, tandis que Hive ne le fait pas. Par défaut, le SerDe échoue si la valeur Amazon Ion ne correspond pas à la colonne Hive, mais vous pouvez utiliser l'option de configuration
fail_on_overflowpour laisser la valeur déborder au lieu d'échouer.Cette propriété peut être définie au niveau de la table ou de la colonne. Pour le spécifier au niveau de la table, spécifiez
ion.fail_on_overflowcomme dans l'exemple suivant. Cela définit le comportement par défaut de toutes les colonnes.'ion.fail_on_overflow' = 'true'Pour contrôler une colonne spécifique, spécifiez le nom de la colonne entre
ionetfail_on_overflow, délimité par des points, comme dans l'exemple suivant.'ion.<column>.fail_on_overflow' = 'false' - ion.path_extractor.case_sensitive
-
Facultatif
Par défaut :
falseValeurs:
true,falseDétermine s'il convient de traiter les noms de champs Amazon Ion comme sensibles à la casse. Quand la valeur est
false, SerDe ignore l'analyse de casse des noms de champs Amazon Ion.Par exemple, supposons que vous ayez un schéma de table Hive qui définit un champ
aliasen minuscules et un document Amazon Ion avec un champaliaset un champALIAS, comme dans l'exemple suivant.-- Hive Table Schema alias: STRING -- Amazon Ion Document { 'ALIAS': 'value1'} { 'alias': 'value2'}L'exemple suivant montre les propriétés SerDe et la table extraite qui en résulte lorsque la sensibilité à la casse est définie sur
false:-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'false' --Extracted Table | alias | |----------| | "value1" | | "value2" |L'exemple suivant montre les propriétés SerDe et la table extraite qui en résulte lorsque la sensibilité à la casse est définie sur
true:-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'true' --Extracted Table | alias | |----------| | "value2" |Dans le second cas, la valeur
value1pour le champALIASest ignorée lorsque la sensibilité à la casse est définie surtrueet l'extracteur de chemin est spécifié comme suit :alias. - ion.
<colonne>.path_extractor -
Facultatif
Valeur par défaut : NA
Valeurs : chaîne avec chemin de recherche
Crée un extracteur de chemin avec le chemin de recherche spécifié pour la colonne donnée. Les extracteurs de chemins mappent les champs Amazon Ion aux colonnes Hive. Si aucun extracteur de chemin n'est spécifié, Athena crée dynamiquement des extracteurs de chemin au moment de l'exécution en fonction des noms de colonnes.
L'exemple d'extracteur de chemin suivant mappe le champ
example_ion_fieldvers la colonneexample_hive_column.'ion.example_hive_column.path_extractor' = '(example_ion_field)'Pour plus d'informations sur les extracteurs de chemin d'accès et les chemins de recherche, consultez Utilisation des extracteurs de chemin.
- ion.timestamp.serialization_offset
-
Facultatif
Par défaut :
'Z'Valeurs :
OFFSET, oùOFFSETest représenté par. Exemples de valeurs :<signal>hh:mm01:00,+01:00,-09:30,Z(UTC, identique à 00:00)Contrairement aux horodatages
Apache Hive qui n'ont pas de fuseau horaire intégré et sont stockés sous forme de décalage par rapport à l'époque UNIX, les horodatages Amazon Ion ont un décalage. Utilisez cette propriété pour spécifier le décalage lorsque vous sérialisez sur Amazon Ion. L'exemple suivant montre comment ajouter un décalage d'une heure.
'ion.timestamp.serialization_offset' = '+01:00' - ion.serialize_null
-
Facultatif
Par défaut :
OMITValeurs:
OMIT,UNTYPED,TYPEDLe SerDe Amazon Ion peut être configuré pour sérialiser ou omettre des colonnes comportant des valeurs nulles. Vous pouvez choisir d'écrire des valeurs nulles fortement typées (
TYPED) ou des valeurs nulles non typées (UNTYPED). Les valeurs null fortement typées sont déterminées en fonction du mappage de type Amazon Ion vers Hive par défaut.L'exemple suivant spécifie des valeurs nulles fortement typées.
'ion.serialize_null'='TYPED' - ion.ignore_malformed
-
Facultatif
Par défaut :
falseValeurs:
true,falseQuand la valeur est
true, ignore les entrées mal formées ou le fichier entier si SerDe n'est pas en mesure de le lire. Pour de plus amples informations, consultez la section Ignore malformed(ignorer les entrées mal formées) dans la documentation sur GitHub. - ion.
<colonne>.serialize_as -
Facultatif
Par défaut : type par défaut de la colonne.
Valeurs : chaîne contenant le type Amazon Ion
Détermine le type de données Amazon Ion dans lequel une valeur est sérialisée. Étant donné que les types Amazon Ion et Hive n'ont pas toujours de mappage direct, quelques types Hive ont plusieurs types de données valides pour la sérialisation. Pour sérialiser les données en tant que type de données autre que par défaut, utilisez cette propriété. Pour plus d'informations sur le mappage des types, consultez la page Type mapping
(Mappage des types) d'Amazon Ion sur GitHub. Par défaut, les colonnes binaires Hive sont sérialisées en tant que blobs Amazon Ion, mais elles peuvent également être sérialisées au format clob Amazon Ion
(grand objet de caractères). L'exemple suivant montre comment sérialiser la colonne example_hive_binary_columnau format clob.'ion.example_hive_binary_column.serialize_as' = 'clob'