Uso de las propiedades del SerDe de Amazon Ion - Amazon Athena

Uso de las propiedades del SerDe de Amazon Ion

Este tema contiene información sobre las propiedades del SerDe para instrucciones CREATE TABLE en Athena. Si desea obtener más información y ejemplos del uso de las propiedades del SerDe de Amazon Ion, consulte SerDe properties (Propiedades del SerDe) en la documentación de Amazon Ion Hive SerDe en GitHub.

Especificación de las propiedades del SerDe de Amazon Ion

Para especificar las propiedades del SerDe de Amazon Ion Hive en la instrucción CREATE TABLE, utilice la cláusula WITH SERDEPROPERTIES. Dado que WITH SERDEPROPERTIES es un subcampo de la cláusula ROW FORMAT SERDE, primero debe especificar ROW FORMAT SERDE y la ruta de clase del SerDe de Amazon Ion Hive, como se muestra en la siguiente sintaxis.

... ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'property' = 'value', 'property' = 'value', ... )

Tenga en cuenta que si bien la cláusula ROW FORMAT SERDE es necesaria si desea utilizar WITH SERDEPROPERTIES, puede utilizar STORED AS ION o las sintaxis más largas INPUTFORMAT y OUTPUTFORMAT para especificar el formato Amazon Ion.

Propiedades del SerDe de Amazon Ion

A continuación, se presentan las propiedades del SerDe de Amazon Ion que se pueden utilizar en instrucciones CREATE TABLE en Athena.

ion.encoding

Opcional

Valor predeterminado: BINARY

Valores: BINARY, TEXT

Esta propiedad declara si los valores nuevos agregados se serializan como formato binario Amazon Ion o formato de texto Amazon Ion.

En la siguiente propiedad del SerDe de ejemplo se especifica el formato de texto Amazon Ion.

'ion.encoding' = 'TEXT'
ion.fail_on_overflow

Opcional

Valor predeterminado: true

Valores: true, false

Amazon Ion permite tipos numéricos arbitrariamente grandes, mientras que Hive no lo permite. El SerDe falla de forma predeterminada si el valor de Amazon Ion no se ajusta a la columna de Hive. Sin embargo, usted puede utilizar la opción de configuración fail_on_overflow para permitir que el valor se desborde en lugar de fallar.

Esta propiedad se puede configurar a nivel de tabla o de columna. Para configurarla a nivel de tabla, especifique ion.fail_on_overflow como en el siguiente ejemplo. Esto configura el comportamiento predeterminado de todas las columnas.

'ion.fail_on_overflow' = 'true'

Para controlar una columna específica, especifique el nombre de la columna entre ion y fail_on_overflow, delimitado por puntos, como en el siguiente ejemplo.

'ion.<column>.fail_on_overflow' = 'false'
ion.path_extractor.case_sensitive

Opcional

Valor predeterminado: false

Valores: true, false

Determina si se debe hacer distinción entre mayúsculas y minúsculas en los nombres de los campos de Amazon Ion. Cuando es false, el SerDe ignora el análisis de mayúsculas y minúsculas de los nombres de los campos de Amazon Ion.

Por ejemplo, supongamos que usted tiene un esquema de tabla de Hive que define un campo alias en minúsculas y un documento de Amazon Ion con un campo alias y un campo ALIAS, como en el siguiente ejemplo.

-- Hive Table Schema alias: STRING -- Amazon Ion Document { 'ALIAS': 'value1'} { 'alias': 'value2'}

En el siguiente ejemplo, se muestran las propiedades del SerDe y la tabla resultante que se extrae cuando la distinción entre mayúsculas y minúsculas se establece en false:

-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'false' --Extracted Table | alias | |----------| | "value1" | | "value2" |

En el siguiente ejemplo, se muestran las propiedades del SerDe y la tabla resultante que se extrae cuando la distinción entre mayúsculas y minúsculas se establece en true:

-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'true' --Extracted Table | alias | |----------| | "value2" |

En el segundo caso, value1 para el campo ALIAS se ignora cuando la distinción entre mayúsculas y minúsculas se establece en true y el extractor de rutas se especifica como alias.

ion.<column>.path_extractor

Opcional

Predeterminado: N/A

Valores: cadena con ruta de búsqueda

Crea un extractor de rutas con la ruta de búsqueda especificada para la columna determinada. Los extractores de rutas asignan campos de Amazon Ion a las columnas de Hive. Si no se especifica ningún extractor de rutas, Athena crea de forma dinámica extractores de rutas en tiempo de ejecución en función de los nombres de las columnas.

En el siguiente extractor de rutas de ejemplo se asigna el example_ion_field a la example_hive_column.

'ion.example_hive_column.path_extractor' = '(example_ion_field)'

Si desea obtener más información sobre los extractores de rutas y las rutas de búsqueda, consulte Uso de extractores de rutas.

ion.timestamp.serialization_offset

Opcional

Valor predeterminado: 'Z'

Valores: OFFSET, donde OFFSET está representado como <signal>hh:mm. Valores de ejemplo: 01:00, +01:00, -09:30, Z (UTC, igual que 00:00)

A diferencia de las marcas temporales de Apache Hive, que no tienen zona horaria integrada y se almacenan como una diferencia horaria de la fecha de inicio de UNIX, las marcas temporales de Amazon Ion sí tienen una diferencia horaria. Utilice esta propiedad para especificar la diferencia horaria cuando serialice en Amazon Ion.

En el ejemplo siguiente, se agrega una diferencia horaria de una hora.

'ion.timestamp.serialization_offset' = '+01:00'
ion.serialize_null

Opcional

Valor predeterminado: OMIT

Valores: OMIT, UNTYPED, TYPED

El SerDe de Amazon Ion se puede configurar para que serialice u omita columnas que tengan valores nulos. Puede elegir escribir valores nulos con tipos sólidos (TYPED) o valores nulos sin tipo alguno (UNTYPED). Los valores nulos con tipos sólidos se determinan en función de la asignación de tipos predeterminada de Amazon Ion para Hive.

En el siguiente ejemplo, se especifican valores nulos con tipos sólidos.

'ion.serialize_null'='TYPED'
ion.ignore_malformed

Opcional

Valor predeterminado: false

Valores: true, false

Cuando es true, se ignoran las entradas con formato incorrecto o se ignora el archivo completo si el SerDe no puede leerlo. Para obtener más información, consulte Ignore malformed (Ignorar elementos con formato incorrecto) en la documentación de GitHub.

ion.<column>.serialize_as

Opcional

Predeterminado: tipo predeterminado para la columna.

Valores: cadena que contiene el tipo de Amazon Ion

Determina el tipo de datos de Amazon Ion en el que se serializa un valor. Dado que los tipos de Amazon Ion y Hive no siempre tienen una asignación directa, algunos tipos de Hive tienen varios tipos de datos válidos para la serialización. Para serializar los datos como un tipo de datos no predeterminado, utilice esta propiedad. Si desea obtener más información sobre la asignación de tipos, consulte la página Type mapping (Asignación de tipos) de Amazon Ion en GitHub.

Las columnas binarias de Hive se serializan de forma predeterminada como blobs de Amazon Ion, pero también se pueden serializar como un clob de Amazon Ion, es decir, un objeto grande de caracteres. En el siguiente ejemplo, se serializa la columna example_hive_binary_column como un clob.

'ion.example_hive_binary_column.serialize_as' = 'clob'