Amazon Ion SerDe Eigenschaftsreferenz
Dieses Thema enthält Informationen zu den SerDe-Eigenschaften für CREATE TABLE-Anweisungen in Athena. Weitere Informationen und Beispiele zur Verwendung von Amazon-Ion-SerDe-Eigenschaften finden Sie unter SerDe-Eigenschaften
So legen Sie die Eigenschaften von Amazon Ion SerDe fest
Um Eigenschaften für Amazon Ion Hive SerDe in Ihrer CREATE TABLE-Anweisung anzugeben, verwenden Sie die WITH SERDEPROPERTIES-Klausel. Da WITH
SERDEPROPERTIES ein Unterfeld der ROW FORMAT SERDE-Klausel ist, müssen Sie zuerst ROW FORMAT SERDE und den Amazon Ion Hive SerDe-Klassenpfad angeben, wie die folgende Syntax zeigt.
... ROW FORMAT SERDE 'com.amazon.ionhiveserde.IonHiveSerDe' WITH SERDEPROPERTIES ( 'property' = 'value', 'property' = 'value', ... )
Beachten Sie, dass, obwohl die ROW FORMAT SERDE-Klausel erforderlich ist, wenn Sie WITH SERDEPROPERTIES verwenden möchten, Sie entweder STORED AS ION oder die längere INPUTFORMAT- und OUTPUTFORMAT-Syntax verwenden können, um das Amazon-Ion-Format anzugeben.
Eigenschaften von Amazon Ion SerDe
Im Folgenden finden Sie die Eigenschaften von Amazon Ion SerDe, die in CREATE
TABLE-Anweisungen in Athena verwendet werden können.
- ion.encoding
-
Optional
Standardwert:
BINARYWerte:
BINARY,TEXTDiese Eigenschaft gibt an, ob neu hinzugefügte Werte als Amazon-Ion-Binär
oder Amazon-Ion-Textformat serialisiert werden. Das folgende Beispiel für die SerDe-Eigenschaft gibt das Amazon-Ion-Textformat an.
'ion.encoding' = 'TEXT' - ion.fail_on_overflow
-
Optional
Standardwert:
trueWerte:
true,falseAmazon Ion erlaubt beliebig große numerische Typen, während Hive dies nicht tut. Standardmäßig schlägt SerDe fehl, wenn der Amazon-Ion-Wert nicht in die Hive-Spalte passt, aber Sie können die
fail_on_overflow-Konfigurationsoption verwenden, um den Wert überlaufen zu lassen, anstatt ihn fehlschlagen zu lassen.Diese Eigenschaft kann entweder auf Tabellen- oder Spaltenebene festgelegt werden. Um es auf Tabellenebene anzugeben, geben Sie
ion.fail_on_overflowwie im folgenden Beispiel an. Dies legt das Standardverhalten für alle Spalten fest.'ion.fail_on_overflow' = 'true'Um eine bestimmte Spalte zu steuern, geben Sie den Spaltennamen zwischen
ionundfail_on_overflowan, getrennt durch Punkte, wie im folgenden Beispiel.'ion.<column>.fail_on_overflow' = 'false' - ion.path_extractor.case_sensitive
-
Optional
Standardwert:
falseWerte:
true,falseBestimmt, ob bei Amazon-Ion-Feldnamen die Groß-/Kleinschreibung beachtet werden soll. Bei
falseignoriert der SerDe die Groß-/Kleinschreibung beim Analysieren von Amazon-Ion-Feldnamen.Angenommen, Sie haben ein Hive-Tabellenschema, das ein Feld
aliasin Kleinbuchstaben definiert, und ein Amazon Ion-Dokument mit sowohl einemalias-Feld als auch einemALIAS-Feld, wie im folgenden Beispiel.-- Hive Table Schema alias: STRING -- Amazon Ion Document { 'ALIAS': 'value1'} { 'alias': 'value2'}Das folgende Beispiel zeigt SerDe-Eigenschaften und die resultierende extrahierte Tabelle, wenn die Groß-/Kleinschreibung auf eingestellt ist
false:-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'false' --Extracted Table | alias | |----------| | "value1" | | "value2" |Das folgende Beispiel zeigt SerDe-Eigenschaften und die resultierende extrahierte Tabelle, wenn die Groß-/Kleinschreibung auf eingestellt ist
true:-- Serde properties 'ion.alias.path_extractor' = '(alias)' 'ion.path_extractor.case_sensitive' = 'true' --Extracted Table | alias | |----------| | "value2" |Im zweiten Fall wird
value1für dasALIAS-Feld ignoriert, wenn die Groß-/Kleinschreibung auftrueeingestellt ist und der Pfad-Extraktor alsaliasangegeben ist. - ion.
<column>.path_extractor -
Optional
Standard: Nicht angegeben
Werte: Zeichenfolge mit Suchpfad
Erstellt einen Pfad-Extraktor mit dem angegebenen Suchpfad für die angegebene Spalte. Pfad-Extraktoren ordnen Amazon-Ion-Felder Hive-Spalten zu. Wenn keine Pfad-Extraktoren angegeben werden, erstellt Athena dynamisch Pfad-Extraktoren zur Laufzeit basierend auf Spaltennamen.
Im folgenden Beispiel wird der Pfad-Extraktor
example_ion_fieldzumexample_hive_columnzugeordnet.'ion.example_hive_column.path_extractor' = '(example_ion_field)'Weitere Informationen zu Pfad-Extraktoren und Suchpfaden finden Sie unter Pfad-Extraktoren verwenden.
- ion.timestamp.serialization_offset
-
Optional
Standardwert:
'Z'Werte:
OFFSET, wobeiOFFSETalsdargestellt wird. Beispielwerte:<signal>hh:mm01:00,+01:00,-09:30,Z(UTC, wie 00:00 Uhr)Im Gegensatz zu Apache-Hive-Zeitstempeln
, die keine integrierte Zeitzone haben und als Offset von der UNIX-Epoche gespeichert werden, haben Amazon-Ion-Zeitstempel einen Offset. Verwenden Sie diese Eigenschaft, um den Offset anzugeben, wenn Sie auf Amazon Ion serialisieren. Im folgenden Beispiel wird ein Offset von einer Stunde hinzugefügt.
'ion.timestamp.serialization_offset' = '+01:00' - ion.serialize_null
-
Optional
Standardwert:
OMITWerte:
OMIT,UNTYPED,TYPEDDer Amazon Ion SerDe kann so konfiguriert werden, dass er Spalten mit Nullwerten serialisiert oder weglässt. Sie können wählen, stark typisierte Nullen auszuschreiben (
TYPED) oder nicht typisierte Nullen (UNTYPED) enthalten. Stark typisierte Nullen werden basierend auf der Standardzuordnung des Typs Amazon Ion zu Hive bestimmt.Das folgende Beispiel gibt stark typisierte Nullen an.
'ion.serialize_null'='TYPED' - ion.ignore_malformed
-
Optional
Standardwert:
falseWerte:
true,falseWenn
truefehlerhafte Einträge oder die gesamte Datei ignoriert, wenn der SerDe sie nicht lesen kann. Weitere Informationen finden Sie unter Fehlerhafte ignorierenin der Dokumentation auf GitHub. - ion.
<column>.serialize_as -
Optional
Standard: Standardtyp für die Spalte.
Werte: Zeichenfolge mit Amazon-Ion-Typ
Bestimmt den Amazon-Ion-Datentyp, in dem ein Wert serialisiert wird. Da Amazon-Ion- und Hive-Typen nicht immer über eine direkte Zuordnung verfügen, haben einige Hive-Typen mehrere gültige Datentypen für die Serialisierung. Verwenden Sie diese Eigenschaft, um Daten als nicht standardmäßigen Datentyp zu serialisieren. Weitere Informationen zum Typmapping finden Sie auf der Seite Amazon-Ion-Typmapping
auf GitHub. Standardmäßig werden binäre Hive-Spalten als Amazon-Ion-Blobs serialisiert, sie können aber auch als Amazon-Ion-Clob
(Character Large Object) serialisiert werden. Im folgenden Beispiel wird die Spalte example_hive_binary_columnals Clob serialisiert.'ion.example_hive_binary_column.serialize_as' = 'clob'