Referencia de la propiedad de 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 Propiedades del SerDe
Cómo especificar las propiedades de 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
yfail_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 campoalias
y un campoALIAS
, 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 campoALIAS
se ignora cuando la distinción entre mayúsculas y minúsculas se establece entrue
y el extractor de rutas se especifica comoalias
. - 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 laexample_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
, dondeOFFSET
está representado como
. Valores de ejemplo:<signal>
hh:mm01: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 siguiente ejemplo , 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 Ignorar elementos con formato incorrectoen 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 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'