Utilizzo del formato Avro in AWS Glue - AWS Glue

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

Utilizzo del formato Avro 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 sono archiviati o trasportati nel formato dati Avro, questo documento descrive le funzioni disponibili per l'utilizzo dei tuoi dati in AWS Glue.

AWS Glue supporta l'uso del formato Avro. Questo formato è un formato dati basato su righe orientato alle prestazioni. Per un'introduzione al formato da parte dell'autorità degli standard, consulta la Documentazione di Apache Avro 1.8.2.

Puoi utilizzare AWS Glue per leggere file Avro da Amazon S3 e da origini di streaming, nonché scrivere file Avro in Amazon S3. Puoi leggere e scrivere archivi bzip2 e gzip contenenti file Avro da S3. Inoltre, è possibile scrivere archivi deflate, snappy e xz contenenti file Avro. Puoi configurare il comportamento di compressione sul Parametri di connessione di S3 invece che nella configurazione discussa in questa pagina.

La tabella seguente mostra le operazioni comuni di AWS Glue che supportano l'opzione del formato Avro.

Lettura Scrittura Lettura in streaming Gruppo di file piccoli Segnalibri di processo
Supportato Supportato Supportato* Non supportato. Supportato

* Supportato con restrizioni. Per ulteriori informazioni, consulta Note e restrizioni per le origini di streaming Avro.

Esempio: lettura di cartelle o file Avro da S3

Prerequisiti: occorrono i percorsi S3 (s3path) nelle cartelle o nei file Avro da leggere.

Configurazione: nelle opzioni della funzione, specifica format="avro". In connection_options, utilizza la chiave paths per specificare s3path. Puoi configurare il modo in cui il reader interagisce con S3 in connection_options. Per i dettagli, consulta le Opzioni del formato dati per input e output ETL in AWS Glue: Indicazioni di riferimento alle opzioni di connessione ad Amazon S3. Puoi configurare la modalità con cui il reader interpreta i file Avro CSV in format_options. Per i dettagli, consulta Documentazione di riferimento della configurazione Avro.

Lo script ETL di AWS Glue riportato di seguito mostra il processo di lettura di cartelle o file Avro da S3:

Python

Per questo esempio, utilizza il metodo create_dynamic_frame.from_options.

from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="s3", connection_options={"paths": ["s3://s3path"]}, format="avro" )
Scala

Per questo esempio, utilizza l'operazione getSourceWithFormat.

import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.GlueContext import org.apache.spark.sql.SparkContext object GlueApp { def main(sysArgs: Array[String]): Unit = { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val dynamicFrame = glueContext.getSourceWithFormat( connectionType="s3", format="avro", options=JsonOptions("""{"paths": ["s3://s3path"]}""") ).getDynamicFrame() }

Esempio: scrittura di file e cartelle Avro in S3

Prerequisiti: avrai bisogno di un DataFrame inizializzato (dataFrame) o di un DynamicFrame (dynamicFrame). Avrai bisogno anche del tuo percorso di output S3 previsto, s3path.

Configurazione: nelle opzioni della funzione, specifica format="avro". Nelle tue connection_options, utilizza la chiave paths per specificare s3path. Puoi modificare ulteriormente il modo in cui il writer interagisce con S3 nelle connection_options. Per i dettagli, consulta le Opzioni del formato dati per input e output ETL in AWS Glue: Indicazioni di riferimento alle opzioni di connessione ad Amazon S3. Puoi modificare la modalità con cui il writer interpreta i file Avro in format_options. Per i dettagli, consulta Documentazione di riferimento della configurazione Avro.

Lo script ETL di AWS Glue riportato di seguito mostra il processo di scrittura di cartelle o file Avro in S3.

Python

Per questo esempio, utilizza il metodo write_dynamic_frame.from_options.

from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="s3", format="avro", connection_options={ "path": "s3://s3path" } )
Scala

Per questo esempio, utilizza l'operazione getSinkWithFormat.

import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.{DynamicFrame, GlueContext} import org.apache.spark.SparkContext object GlueApp { def main(sysArgs: Array[String]): Unit = { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) glueContext.getSinkWithFormat( connectionType="s3", options=JsonOptions("""{"path": "s3://s3path"}"""), format="avro" ).writeDynamicFrame(dynamicFrame) } }

Documentazione di riferimento della configurazione Avro

Puoi utilizzare i seguenti valori format_options dove le librerie di AWS Glue specificano format="avro":

  • version: specifica la versione del formato di lettura/scrittura Apache Avro da supportare. Il valore predefinito è 1.7. Puoi specificare format_options={"version": “1.8”} per abilitare la lettura e la scrittura del tipo logico Avro. Per ulteriori informazioni, consulta Specifiche di Apache Avro 1.7.7 e Specifiche di Apache Avro 1.8.2.

    Il connettore Apache Avro 1.8 supporta le seguenti conversioni di tipo logico:

Per le operazioni di lettura: questa tabella mostra la conversione tra il tipo di dati Avro (tipo logico e tipo primitivo Avro) e il tipo di dati AWS Glue DynamicFrame per le operazioni di lettura Avro 1.7 e 1.8.

Tipo di dati Avro:

Tipo logico

Tipo di dati Avro:

Tipi primitivi .NET

Tipo di dati GluedyNamicFrame:

Avro Reader 1.7

Tipo di dati GluedyNamicFrame:

Avro Reader 1.8

Decimale byte BINARY Decimale
Decimale fisso BINARY Decimale
Data int INT Data
Tempo (millisecondi) int INT INT
Tempo (microsecondi) Long LONG LONG
Timestamp (millisecondi) Long LONG Time stamp
Timestamp (microsecondi) Long LONG LONG
Durata (non un tipo logico) fisso di 12 BINARY BINARY

Per le operazioni di scrittura: questa tabella mostra la conversione tra il tipo di dati AWS Glue DynamicFrame e il tipo di dati Avro per le operazioni di scrittura Avro 1.7 e 1.8.

Tipo di dati AWS Glue DynamicFrame Tipo di dati Avro:

Avro Writer 1.7

Tipo di dati Avro:

Avro Writer 1.8

Decimale Stringa decimal
Data Stringa date
Timestamp Stringa timestamp-micros

Supporto Avro di Spark DataFrame

Per utilizzare Avro dall'API di Spark DataFrame, devi installare il plugin Spark Avro per la versione di Spark corrispondente. La versione di Spark disponibile nel processo è determinata dalla versione di AWS Glue. Per ulteriori informazioni sulle versioni di Spark, consulta Versioni AWS Glue. Questo plugin è gestito da Apache; non forniamo garanzie specifiche sul supporto.

In AWS Glue 2.0: utilizza la versione 2.4.3 del plugin Spark Avro. Puoi trovare questo JAR su Maven Central, consulta org.apache.spark:spark-avro_2.12:2.4.3.

In AWS Glue 3.0: utilizza la versione 3.1.1 del plugin Spark Avro. Puoi trovare questo JAR su Maven Central, consulta org.apache.spark:spark-avro_2.12:3.1.1.

Per includere JAR aggiuntivi in un processo ETL di AWS Glue, usa il parametro di processo --extra-jars. Per ulteriori informazioni sui parametri di processo, consulta Parametri del processo AWS Glue. Puoi configurare questo parametro anche nella AWS Management Console.