Informazioni sulla proprietà SerDE di Amazon Ion
In questo argomento sono contenute informazioni sulle proprietà SerDe per le istruzioni CREATE TABLE in Athena. Per ulteriori informazioni ed esempi di utilizzo della proprietà Amazon Ion SerDe, consulta Proprietà SerDe
Come specificare le proprietà SerDe di Amazon Ion
Per specificare le proprietà per Amazon Ion Hive SerDE nell'istruzione CREATE TABLE, usa la clausola WITH SERDEPROPERTIES. Poiché WITH
SERDEPROPERTIES è un sottocampo della calusola ROW FORMAT SERDE, devi specificare innanzitutto ROW FORMAT SERDE e il percorso della classe Amazon Ion Hive SerDE, come mostrato nella seguente sintassi.
... ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'property' = 'value', 'property' = 'value', ... )
Notare che, anche se la clausola ROW FORMAT SERDE è obbligatoria, se si desidera utilizzare WITH SERDEPROPERTIES, è possibile utilizzare sia STORED AS ION che la sintassi più lunga INPUTFORMAT e OUTPUTFORMAT per specificare il formato Amazon Ion.
Proprietà di Amazon Ion SerDE
Di seguito sono riportate le proprietà Amazon Ion SerDE che possono essere utilizzate nelle istruzioni CREATE
TABLE in Athena.
- ion.encoding
-
Facoltativo
Impostazione predefinita:
BINARYValori:
BINARY,TEXTQuesta proprietà dichiara se i nuovi valori aggiunti sono serializzati come Amazon Ion
o in formato testo Amazon Ion. L'esempio di proprietà SerDE seguente specifica il formato di testo Amazon Ion.
'ion.encoding' = 'TEXT' - ion.fail_on_overflow
-
Facoltativo
Impostazione predefinita:
trueValori:
true,falseAl contrario di Hive, Amazon Ion consente di utilizzare tipi numerici arbitrariamente grandi. SerDE dà di default esito negativo se il valore Amazon Ion non corrisponde alla colonna Hive, ma è possibile utilizzare l'opzione di configurazione
fail_on_overflowper consentire l'overflow del valore anziché ottenere un esito negativo.Questa proprietà può essere impostata a livello di tabella o colonna. Per specificarla a livello di tabella, occorre specificare
ion.fail_on_overflowcome nell'esempio seguente. Questo imposta di default il comportamento per tutte le colonne.'ion.fail_on_overflow' = 'true'Per controllare una colonna specifica, specifica il nome della colonna tra
ionefail_on_overflow, delimitato da punti, come nell'esempio seguente.'ion.<column>.fail_on_overflow' = 'false' - ion.path_extractor.case_sensitive
-
Facoltativo
Impostazione predefinita:
falseValori:
true,falseDetermina se trattare i nomi dei campi Amazon Ion come maiuscole e minuscole. Quando il valore è
false, SerDE ignora l'analisi dei nomi dei campi Amazon Ion.Ad esempio, supponiamo di avere uno schema di tabella Hive che definisce un campo
aliasin minuscolo e un documento Amazon Ion con entrambi i campialiaseALIAS, come nell'esempio seguente.-- Hive Table Schema alias: STRING -- Amazon Ion Document { 'ALIAS': 'value1'} { 'alias': 'value2'}L'esempio seguente mostra le proprietà SerDE e la tabella estratta risultante quando la distinzione tra maiuscole e minuscole è impostata su
false:-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'false' --Extracted Table | alias | |----------| | "value1" | | "value2" |L'esempio seguente mostra le proprietà SerDE e la tabella estratta risultante quando la distinzione tra maiuscole e minuscole è impostata su
true:-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'true' --Extracted Table | alias | |----------| | "value2" |Nel secondo caso, il valore
value1per il campoALIASviene ignorato quando la sensibilità tra maiuscole e minuscole è impostata sutruee l'estrattore del percorso è specificato comealias. - Ion.
<column>.path_extractor -
Facoltativo
Valore predefinito: NA
Valori: stringa con percorso di ricerca
Crea un estrattore di percorso con il percorso di ricerca specificato per la colonna data. Gli estrattori di percorso mappano i campi Amazon Ion alle colonne Hive. Se non vengono specificati estrattori di percorso, Athena li crea dinamicamente in fase di esecuzione in base ai nomi delle colonne.
Il seguente esempio di estrattore di percorso mappa il
example_ion_fieldalexample_hive_column.'ion.example_hive_column.path_extractor' = '(example_ion_field)'Per ulteriori informazioni sugli estrattori di percorso e i percorsi di ricerca, consulta Utilizzare gli estrattori di percorso.
- ion.timestamp.serialization_offset
-
Facoltativo
Impostazione predefinita:
'Z'Valori:
OFFSET, doveOFFSETè rappresentato come. Valori di esempio:<signal>hh:mm01:00,+01:00,-09:30,Z(UTC 00:00)A differenza dei timestamp
di Apache Hive, che non hanno un fuso orario integrato e sono memorizzati come offset rispetto all'UNIX epoch, i timestamp Amazon Ion hanno un offset. Utilizza questa proprietà per specificare l'offset quando esegui la serializzazione su Amazon Ion. L'esempio seguente aggiunge un offset di un'ora.
'ion.timestamp.serialization_offset' = '+01:00' - ion.serialize_null
-
Facoltativo
Impostazione predefinita:
OMITValori:
OMIT,UNTYPED,TYPEDAmazon Ion SerDE può essere configurato per serializzare o omettere colonne con valori nulli. È possibile scegliere di scrivere null fortemente tipizzati (
TYPED) o null non tipizzati (UNTYPED). I null fortemente tipizzati vengono determinati in base alla mappatura predefinita di tipo Amazon Ion to Hive.L'esempio seguente specifica i valori null fortemente tipizzati.
'ion.serialize_null'='TYPED' - ion.ignore_malformed
-
Facoltativo
Impostazione predefinita:
falseValori:
true,falseQuando è impostato
true, ignora le voci malformate o l'intero file se SerDE non è in grado di leggerlo. Per ulteriori informazioni, consulta la documentazione relativa a ignora malformatisu GitHub. - Ion.
<column>.serialize_as -
Facoltativo
Predefinito: tipo predefinito per la colonna.
Valori: stringa contenente il tipo Amazon Ion
Determina il tipo di dati Amazon Ion in cui viene serializzato un valore. Poiché i tipi Amazon Ion e Hive non hanno sempre una mappatura diretta, alcuni tipi di Hive hanno più tipi di dati validi per la serializzazione. Per serializzare i dati come tipo di dati non di default, utilizzare questa proprietà. Per ulteriori informazioni sulla mappatura dei tipi, consulta la pagina Tipo di mappatura
di Amazon Ion su GitHub Le colonne binarie Hive sono serializzate di default come BLOB Amazon Ion, ma possono anche essere serializzate come CLOB Amazon Ion
(oggetto carattere grande). L'esempio seguente serializza la colonna example_hive_binary_columncome un CLOB.'ion.example_hive_binary_column.serialize_as' = 'clob'