Convertire il formato dei dati di input in Amazon Data Firehose - Amazon Data Firehose

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Convertire il formato dei dati di input in Amazon Data Firehose

Amazon Data Firehose è in grado di convertire il formato dei dati di input in Apache Parquet o Apache ORC prima di archiviarli in Amazon S3. JSON Parquet e ORC sono formati di dati colonnari che consentono di risparmiare spazio e consentono query più rapide rispetto ai formati orientati alle righe come. JSON Se vuoi convertire un formato di input diverso daJSON, come valori separati da virgole () CSV o testo strutturato, puoi usare AWS Lambda per trasformarlo in primo luogo. JSON Per ulteriori informazioni, consulta Trasforma i dati di origine in Amazon Data Firehose.

Puoi convertire il formato dei tuoi dati anche se aggreghi i tuoi record prima di inviarli ad Amazon Data Firehose.

Amazon Data Firehose richiede i seguenti tre elementi per convertire il formato dei dati dei record:

Deserializer

Amazon Data Firehose richiede un deserializzatore per leggere i JSON dati di input. Puoi scegliere uno dei seguenti due tipi di deserializzatore.

Quando combini più JSON documenti nello stesso record, assicurati che l'input sia comunque presentato nel formato supportato. JSON Una serie di JSON documenti non è un input valido.

Ad esempio, questo è l'input corretto: {"a":1}{"a":2}

E questo è l'input errato: [{"a":1}, {"a":2}]

Scegliete OpenX JSON SerDe se l'input JSON contiene timestamp nei seguenti formati:

  • yyyyyy-MM-dd'T'HH:mm:ss[.S]'Z', dove la frazione può avere fino a 9 cifre, ad esempio, 2017-02-07T15:13:01.39256Z.

  • yyyy-[M]M-[d]d HH:mm:ss[.S], dove la frazione può avere fino a 9 cifre, ad esempio, 2017-02-07 15:13:01.14.

  • Secondi epoch: ad esempio, 1518033528.

  • Millisecondi epoch: ad esempio, 1518033528123.

  • Secondi epoch a virgola mobile: ad esempio, 1518033528.123.

OpenX JSON SerDe può convertire i punti (.) in caratteri di sottolineatura (). _ Può anche convertire JSON le chiavi in lettere minuscole prima di deserializzarle. Per ulteriori informazioni sulle opzioni disponibili con questo deserializzatore tramite Amazon Data Firehose, consulta O. penXJson SerDe

Se non sei sicuro di quale deserializzatore scegliere, usa OpenX JSON SerDe, a meno che tu non abbia timestamp che non supporta.

Se hai timestamp in formati diversi da quelli elencati in precedenza, usa Apache Hive. JSON SerDe Se scegli questo deserializzatore, puoi specificare i formati di timestamp da utilizzare. Per eseguire questa operazione, segui il modello di sintassi delle stringhe di formato DateTimeFormat Joda-Time. Per ulteriori informazioni, consulta Class. DateTimeFormat

Puoi anche utilizzare il valore speciale millis per analizzare timestamp in millisecondi Unix epoch. Se non specifichi un formato, Amazon Data Firehose lo utilizza java.sql.Timestamp::valueOf per impostazione predefinita.

The Hive JSON SerDe non consente quanto segue:

  • Punti (.) nei nomi di colonna.

  • Campi il cui tipo è uniontype.

  • Campi che hanno tipi numerici nello schema, ma che sono stringhe in. JSON Ad esempio, se lo schema è (un int) e lo JSON è{"a":"123"}, Hive SerDe restituisce un errore.

L'Hive SerDe non converte i file annidati JSON in stringhe. Ad esempio, se hai {"a":{"inner":1}}, non tratta {"inner":1} come stringa.

Schema

Amazon Data Firehose richiede uno schema per determinare come interpretare tali dati. Utilizzare AWS Glue per creare uno schema nel AWS Glue Data Catalog. Amazon Data Firehose fa quindi riferimento a tale schema e lo utilizza per interpretare i dati di input. Puoi utilizzare lo stesso schema per configurare sia Amazon Data Firehose che il tuo software di analisi. Per ulteriori informazioni, consulta Population the AWS Glue Data Catalog nel AWS Glue Guida per gli sviluppatori.

Nota

Lo schema creato in AWS Glue Il catalogo dati deve corrispondere alla struttura dei dati di input. In caso contrario, i dati convertiti non conterranno attributi non specificati nello schema. Se utilizzi nestedJSON, usa un STRUCT tipo nello schema che rispecchi la struttura dei tuoi JSON dati. Vedi questo esempio per sapere come gestire il nidificato JSON con un tipo. STRUCT

Importante

Per i tipi di dati che non specificano un limite di dimensione, esiste un limite pratico di 32 MBs per tutti i dati in una singola riga.

Se si specifica length per CHAR oVARCHAR, Firehose tronca le stringhe alla lunghezza specificata quando legge i dati di input. Se la stringa di dati sottostante è più lunga, rimane invariata.

Serializer

Firehose richiede un serializzatore per convertire i dati nel formato di archiviazione colonnare di destinazione (Parquet oORC): è possibile scegliere uno dei due tipi di serializzatori seguenti.

Il serializzatore scelto dipende dalle esigenze aziendali. Per ulteriori informazioni sulle due opzioni di serializzazione, consulta e Parquet. ORC SerDe SerDe