Utilizzo del formato JSON in AWS Glue
AWS Glue recupera i dati dalle origini e scrive i dati sulle destinazioni archiviati e trasportati in vari formati di dati. Se i tuoi dati vengono archiviati o trasportati nel formato dati JSON, questo documento descrive le funzionalità disponibili per l'utilizzo dei dati in AWS Glue.
AWS Glue supporta l'uso del formato JSON. Questo formato rappresenta strutture di dati con forma coerente ma contenuti flessibili, che non sono basate su righe o colonne. JSON è definito tramite standard paralleli emessi da diverse autorità, una delle quali è ECMA-404. Per un'introduzione al formato da una fonte di riferimento comune, consulta Introduzione a JSON
Puoi utilizzare AWS Glue per leggere file JSON da Amazon S3, nonché file KJSON compressi bzip e gzip. Puoi configurare il comportamento di compressione sul Parametri di connessione di S3 invece che nella configurazione discussa in questa pagina.
| Lettura | Scrittura | Lettura in streaming | Gruppo di file piccoli | Segnalibri di processo |
|---|---|---|---|---|
| Supportato | Supportato | Supportato | Supportato | Supportato |
Esempio: lettura di cartelle o file JSON da S3
Prerequisiti: occorrono i percorsi S3 (s3path) nelle cartelle o nei file JSON da leggere.
Configurazione: nelle opzioni della funzione, specifica format="json". Nelle tue connection_options, utilizza la chiave paths per specificare s3path. Puoi modificare ulteriormente la modalità con cui l'operazione di lettura attraversa s3 nelle opzioni di connessione; consulta Indicazioni di riferimento alle opzioni di connessione ad Amazon S3 per dettagli. Puoi configurare la modalità con cui il reader interpreta i file JSON in format_options. Per i dettagli, consulta la Documentazione di riferimento della configurazione JSON.
Lo script ETL di AWS Glue riportato di seguito mostra il processo di lettura di cartelle o file JSON da S3:
Esempio: scrittura di file e cartelle JSON su S3
Prerequisiti: occorre un DataFrame (dataFrame) o un DynamicFrame (dynamicFrame) inizializzato. È necessario anche del tuo percorso di output S3 previsto, s3path.
Configurazione: nelle opzioni della funzione, specifica format="json". In connection_options, utilizzare la chiave paths per specificare s3path. È possibile modificare ulteriormente il modo in cui il writer interagisce con S3 nelle connection_options. Per i dettagli, consultare le Opzioni del formato dati per input e output ETL in AWS Glue: Indicazioni di riferimento alle opzioni di connessione ad Amazon S3. È possibile configurare la modalità con cui il writer interpreta i file JSON in format_options. Per i dettagli, consultare la Documentazione di riferimento della configurazione JSON.
Lo script ETL di AWS Glue riportato di seguito mostra il processo di scrittura di cartelle o file JSON da S3:
Documentazione di riferimento della configurazione JSON
È possibile usare i valori di format_options seguenti con format="json":
-
jsonPath: una espressione JsonPathche identifica un oggetto da leggere nei registri. È particolarmente utile quando un file contiene registri annidati in una matrice esterna. L'espressione JsonPath seguente, ad esempio, ha come target il campo iddi un oggetto JSON.format="json", format_options={"jsonPath": "$.id"} multiline: un valore booleano che specifica se un singolo registro può estendersi su più righe. Ciò può accadere quando un campo contiene un carattere di nuova riga tra virgolette. Imposta questa opzione su"true"se i registri si estendono su più righe. Il valore di default è"false", che consente una divisione dei file più netta durante l'analisi.-
optimizePerformance: valore booleano che specifica se utilizzare il lettore JSON SIMD avanzato insieme ai formati di memoria colonnare basati su Apache Arrow. Disponibile solo in AWS Glue 3.0. Non compatibile conmultilineojsonPath. Fornire una di queste opzioni istruirà AWS Glue per tornare al lettore standard. -
withSchema: un valore di stringa che specifica uno schema di tabella nel formato descritto in Specifica manuale dello schema XML. Utilizzato solo conoptimizePerformancedurante la lettura da connessioni non di catalogo.
Utilizzo del lettore JSON SIMD vettorizzato con formato colonnare Apache Arrow
La versione AWS Glue 3.0 aggiunge un lettore vettorizzato per i dati JSON. Funziona 2 volte più velocemente in determinate condizioni, rispetto al lettore standard. Questo lettore presenta alcune limitazioni di cui gli utenti dovrebbero essere consapevoli prima dell'uso, documentate in questa sezione.
Per utilizzare il lettore ottimizzato, impostare "optimizePerformance" a True nella format_options o nella proprietà della tabella. È necessario anche fornire withSchema a meno che non venga letto dal catalogo. withSchema prevede un input come descritto nel Specifica manuale dello schema XML
// Read from S3 data source glueContext.create_dynamic_frame.from_options( connection_type = "s3", connection_options = {"paths": ["s3://s3path"]}, format = "json", format_options={ "optimizePerformance": True, "withSchema":SchemaString}) // Read from catalog table glueContext.create_dynamic_frame.from_catalog( database = database, table_name = table, additional_options = { // The vectorized reader for JSON can read your schema from a catalog table property. "optimizePerformance": True, })
Per ulteriori informazioni sullo sviluppo di uno SchemaString nella libreria AWS Glue, consultare Tipi di estensione PySpark.
Limitazioni per il lettore CSV vettorizzato
Nota i seguenti limiti:
Gli elementi JSON con oggetti nidificati o valori di array non sono supportati. Se previsto, AWS Glue tornerà al lettore standard.
È necessario fornire uno schema, dal catalogo o con
withSchema.Non compatibile con
multilineojsonPath. Fornire una di queste opzioni istruirà AWS Glue per tornare al lettore standard.Fornire registri di input che non corrispondono allo schema di input provocherà il fallimento del lettore.
I registri di errori non verranno creati.
Non supporta file JSON con caratteri multibyte (come caratteri giapponesi o cinesi).