Verwenden von Amazon Ion SerDe Eigenschaften - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Amazon Ion SerDe Eigenschaften

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 in der Dokumentation zu Amazon Ion Hive SerDe auf GitHub.

Angeben von Amazon Ion SerDe Eigenschaften

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 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

Standard: BINARY

Werte: BINARY, TEXT

Diese 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

Standard: true

Werte: true, false

Amazon 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_overflow wie 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 ion und fail_on_overflow an, getrennt durch Punkte, wie im folgenden Beispiel.

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

Optional

Standard: false

Werte: true, false

Bestimmt, ob bei Amazon-Ion-Feldnamen die Groß-/Kleinschreibung beachtet werden soll. Bei false ignoriert der SerDe die Groß-/Kleinschreibung beim Analysieren von Amazon-Ion-Feldnamen.

Angenommen, Sie haben ein Hive-Tabellenschema, das ein Feld alias in Kleinbuchstaben definiert, und ein Amazon Ion-Dokument mit sowohl einem alias-Feld als auch einem ALIAS-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 false eingestellt ist:

-- 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 true eingestellt ist:

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

Im zweiten Fall wird value1 für das ALIAS-Feld ignoriert, wenn die Groß-/Kleinschreibung auf true eingestellt ist und der Pfad-Extraktor als alias angegeben 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_field zum example_hive_column zugeordnet.

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

Weitere Informationen zu Pfad-Extraktoren und Suchpfaden finden Sie unter Verwenden von Pfad-Extraktoren.

ion.timestamp.serialization_offset

Optional

Standard: 'Z'

Werte: OFFSET, wobei OFFSET als <signal>hh:mm dargestellt wird. Beispielwerte: 01: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

Standard: OMIT

Werte: OMIT, UNTYPED, TYPED

Der 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

Standard: false

Werte: true, false

Wenn true fehlerhafte Einträge oder die gesamte Datei ignoriert, wenn der SerDe sie nicht lesen kann. Weitere Informationen finden Sie unter Fehlerhafte ignorieren in 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_column als Clob serialisiert.

'ion.example_hive_binary_column.serialize_as' = 'clob'