

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.

# Konvertieren Sie das Eingabedatenformat in Amazon Data Firehose
<a name="record-format-conversion"></a>

Amazon Data Firehose kann das Format Ihrer Eingabedaten von JSON in [Apache Parquet oder Apache](https://parquet.apache.org/) [ORC](https://orc.apache.org/) konvertieren, bevor die Daten in Amazon S3 gespeichert werden. Parquet und ORC sind spaltenförmige Datenformate, die Platz sparen und im Vergleich zu zeilenorientierten Formaten wie JSON schnellere Abfragen ermöglichen. Wenn Sie ein anderes Eingabeformat als JSON konvertieren möchten, z. B. kommagetrennte Werte (CSV) oder strukturierten Text, können Sie es zunächst in JSON AWS Lambda umwandeln. Weitere Informationen finden Sie unter [Transformieren Sie Quelldaten in Amazon Data Firehose](data-transformation.md).

Sie können das Format Ihrer Daten konvertieren, auch wenn Sie Ihre Datensätze aggregieren, bevor Sie sie an Amazon Data Firehose senden.

Amazon Data Firehose benötigt die folgenden drei Elemente, um das Format Ihrer Datensatzdaten zu konvertieren: 

## Deserializer
<a name="record-format-conversion-deserializer"></a>

Amazon Data Firehose benötigt einen Deserializer, um das JSON Ihrer Eingabedaten zu lesen. Sie können einen der folgenden zwei Deserializer-Typen wählen.

Wenn Sie mehrere JSON-Dokumente zu demselben Datensatz kombinieren, stellen Sie sicher, dass Ihre Eingabe weiterhin im unterstützten JSON-Format dargestellt wird. Ein Array von JSON-Dokumenten ist keine gültige Eingabe. 

Dies ist beispielsweise die richtige Eingabe: `{"a": 1}{"b": 1}` und dies ist die falsche Eingabe:`[{"a":1}, {"a":2}]`.
+ [Apache Hive JSON SerDe](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-JSON)
+ [OpenX JSON SerDe](https://github.com/rcongiu/Hive-JSON-Serde)

### Wählen Sie den JSON-Deserializer
<a name="record-format-conversion-deserializers"></a>

Wählen Sie [OpenX JSON](https://github.com/rcongiu/Hive-JSON-Serde), SerDe wenn Ihr Eingabe-JSON Zeitstempel in den folgenden Formaten enthält:
+  yyyy-MM-dd'T'hh:mm:ss [.S] 'Z', wobei der Bruch bis zu 9 Ziffern haben kann — zum Beispiel. `2017-02-07T15:13:01.39256Z`
+  yyyy-[M]M-[d]d HH:mm:ss[.S], wobei der Bruchteil bis zu 9 Stellen haben kann – z. B. `2017-02-07 15:13:01.14`.
+  Epoch-Sekunden – z. B. `1518033528`.
+  Epoch-Millisekunden – z. B. `1518033528123`.
+  Fließkomma-Epoch-Sekunden – z. B. `1518033528.123`.

Das OpenX-JSON SerDe kann Punkte (`.`) in Unterstriche (`_`) konvertieren. Es kann außerdem JSON-Schlüssel in Kleinbuchstaben konvertieren, bevor er sie deserialisiert. [Weitere Informationen zu den Optionen, die mit diesem Deserializer über Amazon Data Firehose verfügbar sind, finden Sie unter Öffnen. XJson SerDe](https://docs.aws.amazon.com/firehose/latest/APIReference/API_OpenXJsonSerDe.html)

Wenn Sie sich nicht sicher sind, welchen Deserializer Sie wählen sollen, verwenden Sie OpenX JSON, es sei denn SerDe, Sie haben Zeitstempel, die er nicht unterstützt.

[Wenn Sie Zeitstempel in anderen als den zuvor aufgeführten Formaten haben, verwenden Sie Apache Hive JSON. SerDe](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-JSON) Wenn Sie diesen Deserializer wählen, können Sie die zu verwendenden Zeitstempel-Formate angeben. Dazu wenden Sie die Mustersyntax der Joda-Time `DateTimeFormat`-Formatzeichenfolgen an. Weitere Informationen finden Sie unter [Class DateTimeFormat](https://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html). 

Sie können auch den speziellen Wert `millis` zum Analysieren von Zeitstempeln in Epoch-Millisekunden verwenden. Wenn Sie kein Format angeben, verwendet Amazon Data Firehose `java.sql.Timestamp::valueOf` standardmäßig.

Das Hive-JSON erlaubt Folgendes SerDe nicht:
+ Punkte (`.`) in Spaltennamen.
+ Felder mit dem Typ `uniontype`.
+ Felder, für die numerische Typen im Schema angegeben sind, die aber im JSON Zeichenfolgen sind. Wenn das Schema beispielsweise (ein Int) und das JSON ist`{"a":"123"}`, SerDe gibt Hive einen Fehler aus.

Der Hive konvertiert verschachteltes JSON SerDe nicht in Zeichenketten. Wenn Sie zum Beispiel `{"a":{"inner":1}}` haben, behandelt er `{"inner":1}` nicht als Zeichenfolge.

## Schema
<a name="record-format-conversion-schema"></a>

Amazon Data Firehose benötigt ein Schema, um zu bestimmen, wie diese Daten interpretiert werden sollen. Verwenden Sie [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html), um ein Schema in der zu erstellen AWS Glue Data Catalog. Amazon Data Firehose verweist dann auf dieses Schema und verwendet es, um Ihre Eingabedaten zu interpretieren. Sie können dasselbe Schema verwenden, um sowohl Amazon Data Firehose als auch Ihre Analysesoftware zu konfigurieren. Weitere Informationen finden Sie unter [Füllen des AWS Glue-Datenkatalogs](https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html) im *AWS Glue Entwicklerhandbuch*.

**Anmerkung**  
Das im AWS Glue Datenkatalog erstellte Schema sollte der Eingabedatenstruktur entsprechen. Andernfalls enthalten die konvertierten Daten keine Attribute, die nicht im Schema angegeben sind. Wenn Sie verschachteltes JSON verwenden, verwenden Sie einen STRUCT-Typ im Schema, der die Struktur Ihrer JSON-Daten widerspiegelt. [In diesem Beispiel](https://docs.aws.amazon.com/athena/latest/ug/openx-json-serde.html#nested-json-serde-example) erfahren Sie, wie Sie verschachteltes JSON mit einem STRUCT-Typ behandeln. 

**Wichtig**  
Für Datentypen, die keine Größenbeschränkung angeben, gibt es eine praktische Grenze von 32 MBs für alle Daten in einer einzigen Zeile.  
Wenn Sie die Länge für `CHAR` oder angeben`VARCHAR`, kürzt Firehose die Zeichenketten beim Lesen der Eingabedaten auf die angegebene Länge. Wenn die zugrunde liegende Datenzeichenfolge länger ist, bleibt sie unverändert.

## Serializer
<a name="record-format-conversion-serializer"></a>

**Firehose benötigt einen Serializer, um die Daten in das spaltenförmige Zielspeicherformat (Parquet oder ORC) zu** konvertieren. Sie können einen der folgenden beiden Serialisierertypen wählen. 
+ [ORC SerDe](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC)
+ [Parkett SerDe](https://cwiki.apache.org/confluence/display/Hive/Parquet)

### Wählen Sie den Serializer
<a name="record-format-conversion-serializers"></a>

Welchen Serializer Sie auswählen sollten, hängt von den Anforderungen Ihres Unternehmens ab. [https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC)

# Aktivieren Sie die Konvertierung des Datensatzformats
<a name="enable-record-format-conversion"></a>

Wenn Sie die Konvertierung von Datensatzformaten aktivieren, können Sie Ihr Amazon Data Firehose-Ziel nicht auf Amazon OpenSearch Service, Amazon Redshift oder Splunk festlegen. Wenn die Formatkonvertierung aktiviert ist, ist Amazon S3 das einzige Ziel, das Sie für Ihren Firehose-Stream verwenden können. Der folgende Abschnitt zeigt, wie Sie die Konvertierung von Datensatzformaten aus Konsolen- und Firehose-API-Vorgängen aktivieren. Ein Beispiel für die Einrichtung der Konvertierung von Datensatzformaten mit CloudFormation finden Sie unter [AWS:::DataFirehose: DeliveryStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kinesisfirehose-deliverystream.html#aws-resource-kinesisfirehose-deliverystream--examples).

## Aktivieren Sie die Konvertierung des Datensatzformats von der Konsole aus
<a name="record-format-conversion-using-console"></a>

Sie können die Datenformatkonvertierung auf der Konsole aktivieren, wenn Sie einen Firehose-Stream erstellen oder aktualisieren. Wenn die Datenformatkonvertierung aktiviert ist, ist Amazon S3 das einzige Ziel, das Sie für den Firehose-Stream konfigurieren können. Außerdem wird beim Aktivieren einer Formatkonvertierung die Amazon-S3-Komprimierung deaktiviert. Die Snappy-Komprimierung erfolgt jedoch automatisch als Teil des Konvertierungsvorgangs. Das Framing-Format für Snappy, das Amazon Data Firehose in diesem Fall verwendet, ist mit Hadoop kompatibel. Das bedeutet, dass Sie die Ergebnisse der Snappy-Komprimierung verwenden und für diese Daten Abfragen in Athena ausführen können. [Informationen zum Snappy-Framing-Format, auf das Hadoop angewiesen ist, finden Sie unter .java. BlockCompressorStream](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java)

**Um die Datenformatkonvertierung für einen Firehose-Datenstream zu aktivieren**

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die Amazon Data Firehose-Konsole unter [https://console.aws.amazon.com/firehose/](https://console.aws.amazon.com/firehose/).

1. Wählen Sie einen Firehose-Stream aus, der aktualisiert werden soll, oder erstellen Sie einen neuen Firehose-Stream, indem Sie die Schritte unter befolgen. [Tutorial: Einen Firehose-Stream von der Konsole aus erstellen](basic-create.md)

1. Setzen Sie unter **Convert record format (Datensatzformat konvertieren)** die Option **Record format conversion (Datensatzformat-Konvertierung)** auf **Enabled (Aktiviert)**.

1. Wählen Sie die Option aus, die Sie hinzufügen möchten. Weitere Informationen zu den beiden Optionen finden Sie unter [Apache Parquet](https://parquet.apache.org/) und [Apache ORC](https://orc.apache.org/).

1. Wählen Sie eine AWS Glue Tabelle aus, um ein Schema für Ihre Quelldatensätze anzugeben. Legen Sie die Region, Datenbank, Tabelle und Tabellenversion fest.

## Verwalten Sie die Konvertierung des Datensatzformats über die Firehose-API
<a name="record-format-conversion-using-api"></a>

[Wenn Sie möchten, dass Amazon Data Firehose das Format Ihrer Eingabedaten von JSON nach Parquet oder ORC konvertiert, geben Sie das optionale [DataFormatConversionConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DataFormatConversionConfiguration.html)Element in [ExtendedS3 oder in ExtendedS3 DestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html) an. DestinationUpdate](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationUpdate.html) Wenn Sie angeben, gelten die folgenden Einschränkungen. [DataFormatConversionConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DataFormatConversionConfiguration.html)
+ [BufferingHints](https://docs.aws.amazon.com/firehose/latest/APIReference/API_BufferingHints.html)In können Sie keinen Wert unter 64 festlegen`SizeInMBs`, wenn Sie die Konvertierung des Datensatzformats aktivieren. Wenn Formatkonvertierung nicht aktiviert ist, lautet der Standardwert 5. Bei Aktivierung wird der Wert 128.
+ [Sie müssen in ExtendedS3 DestinationConfiguration oder `CompressionFormat` in [ExtendedS3](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html) auf einstellen. DestinationUpdate](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationUpdate.html) `UNCOMPRESSED` Der Standardwert für den `CompressionFormat` beträgt `UNCOMPRESSED`. [Daher können Sie es in ExtendedS3 auch unspezifiziert lassen. DestinationConfiguration](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ExtendedS3DestinationConfiguration.html) Die Daten werden als Teil der Serialisierungsprozesses dennoch komprimiert. Dazu wird standardmäßig die Snappy-Komprimierung verwendet. Das Framing-Format für Snappy, das Amazon Data Firehose in diesem Fall verwendet, ist mit Hadoop kompatibel. Das bedeutet, dass Sie die Ergebnisse der Snappy-Komprimierung verwenden und für diese Daten Abfragen in Athena ausführen können. [Informationen zum Snappy-Framing-Format, auf das Hadoop angewiesen ist, finden Sie unter .java. BlockCompressorStream](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java) Wenn Sie den Serializer konfigurieren, können Sie andere Arten der Komprimierung auswählen.

# Behandlung von Fehlern bei der Konvertierung von Datenformaten
<a name="record-format-conversion-error-handling"></a>

Wenn Amazon Data Firehose einen Datensatz nicht analysieren oder deserialisieren kann (z. B. wenn die Daten nicht dem Schema entsprechen), schreibt es ihn mit einem Fehlerpräfix in Amazon S3. Wenn dieser Schreibvorgang fehlschlägt, wiederholt Amazon Data Firehose den Vorgang für immer, wodurch die weitere Zustellung blockiert wird. Für jeden fehlgeschlagenen Datensatz schreibt Amazon Data Firehose ein JSON-Dokument mit dem folgenden Schema:

```
{
  "attemptsMade": long,
  "arrivalTimestamp": long,
  "ErrorCode": string,
  "ErrorMessage": string,
  "attemptEndingTimestamp": long,
  "rawData": string,
  "sequenceNumber": string,
  "subSequenceNumber": long,
  "dataCatalogTable": {
    "catalogId": string,
    "databaseName": string,
    "tableName": string,
    "region": string,
    "versionId": string,
    "catalogArn": string
  }
}
```