Ottimizza l'ETLingestione della dimensione del file di input su AWS - Prontuario AWS

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

Ottimizza l'ETLingestione della dimensione del file di input su AWS

Creato da Apoorva Patrikar () AWS

Ambiente: PoC o pilota

Tecnologie: analisi; data lake

Carico di lavoro: open source

AWSservizi: AWS Glue; Amazon S3

Riepilogo

Questo modello mostra come ottimizzare la fase di inserimento del processo di estrazione, trasformazione e caricamento (ETL) per i big data e i carichi di lavoro Apache Spark su Glue ottimizzando le dimensioni del file AWS prima di elaborare i dati. Utilizzate questo schema per prevenire o risolvere il problema dei file di piccole dimensioni. Cioè, quando un numero elevato di file di piccole dimensioni rallenta l'elaborazione dei dati a causa della dimensione aggregata dei file. Ad esempio, centinaia di file che pesano solo poche centinaia di kilobyte ciascuno possono rallentare notevolmente la velocità di elaborazione dei dati per i lavori AWS Glue. Questo perché AWS Glue deve eseguire funzioni di elenco interne su Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) YARN e (Yet Another Resource Negotiator) deve memorizzare una grande quantità di metadati. Per migliorare la velocità di elaborazione dei dati, puoi utilizzare il raggruppamento per consentire alle tue ETL attività di leggere un gruppo di file di input in un'unica partizione in memoria. La partizione raggruppa automaticamente i file più piccoli. In alternativa, è possibile utilizzare codice personalizzato per aggiungere logica batch ai file esistenti.

Prerequisiti e limitazioni

Prerequisiti

Architettura

Lo schema seguente mostra come i dati in diversi formati vengono elaborati da un lavoro AWS Glue e quindi archiviati in un bucket S3 per ottenere visibilità sulle prestazioni.

I dati in diversi formati vengono elaborati da un lavoro AWS Glue e quindi archiviati in un bucket S3.

Il diagramma mostra il flusso di lavoro seguente:

  1. Un lavoro AWS Glue converte file di piccole dimensioni in CSV formato Parquet e Parquet in cornici dinamiche. JSON Nota: la dimensione del file di input ha l'impatto più importante sulle prestazioni del job AWS Glue.

  2. Il job AWS Glue esegue funzioni di elenco interne in un bucket S3.

Strumenti

  • AWSGlue è un ETL servizio completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

Epiche

AttivitàDescrizioneCompetenze richieste

Specificare la dimensione del gruppo.

Se hai più di 50.000 file, il raggruppamento viene eseguito per impostazione predefinita. Tuttavia, è possibile utilizzare il raggruppamento anche per meno di 50.000 file specificando la dimensione del gruppo nel parametro. connectionOptions Il connectionOptions parametro si trova nel metodo. create_dynamic_frame.from_options

Ingegnere dei dati

Scrivi il codice di raggruppamento.

Usa il create_dynamic_frame metodo per creare una cornice dinamica. Per esempio:

S3bucket_node1 = glueContext.create_dynamic_frame.from_options( format_options={"multiline": False}, connection_type="s3", format="json", connection_options={ "paths": ["s3://bucket/prefix/file.json"], "recurse": True, "groupFiles": 'inPartition', "groupSize": 1048576 }, transformation_ctx="S3bucket_node1", )

Nota: groupFiles da utilizzare per raggruppare i file in un gruppo di partizioni Amazon S3. Si usa groupSize per impostare la dimensione di destinazione del gruppo da leggere in memoria. Specificare groupSize in byte (1048576 = 1 MB).

Ingegnere dei dati

Aggiungi il codice al flusso di lavoro.

Aggiungi il codice di raggruppamento al flusso di lavoro in AWS Glue.

Ingegnere dei dati
AttivitàDescrizioneCompetenze richieste

Scegli la lingua e la piattaforma di elaborazione.

Scegli il linguaggio di scripting e la piattaforma di elaborazione su misura per il tuo caso d'uso.

Architetto del cloud

Scrivi il codice.

Scrivi la logica personalizzata per raggruppare i tuoi file.

Architetto del cloud

Aggiungi il codice al flusso di lavoro.

Aggiungi il codice al tuo flusso di lavoro in AWS Glue. Ciò consente di applicare la logica personalizzata ogni volta che il lavoro viene eseguito.

Ingegnere dei dati
AttivitàDescrizioneCompetenze richieste

Analizza i modelli di consumo.

Scopri come le applicazioni downstream utilizzeranno i dati che scrivi. Ad esempio, se eseguono query sui dati ogni giorno e i dati vengono partizionati solo per regione o se i file di output sono molto piccoli, ad esempio 2,5 KB per file, non si tratta di una soluzione ottimale per il consumo.

DBA

Ripartiziona i dati prima della scrittura.

Ripartizione basata su join o interrogazioni durante l'elaborazione (in base alla logica di elaborazione) e dopo l'elaborazione (in base al consumo). Ad esempio, ripartizione basata sulla dimensione dei byte, ad esempio, o ripartizione basata su colonne.repartition(100000), ad esempio. .repartition("column_name")

Ingegnere dei dati

Risorse correlate

Informazioni aggiuntive

Determinazione della dimensione del

Non esiste un modo semplice per determinare se la dimensione di un file è troppo grande o troppo piccola. L'impatto della dimensione del file sulle prestazioni di elaborazione dipende dalla configurazione del cluster. In Hadoop di base, si consiglia di utilizzare file di 128 MB o 256 MB per sfruttare al meglio la dimensione del blocco.

Per la maggior parte dei carichi di lavoro di file di testo su AWS Glue, consigliamo una dimensione del file compresa tra 100 MB e 1 GB per un cluster da 5 a 10DPU. Per determinare la dimensione ottimale dei file di input, controllate la sezione di preelaborazione del vostro lavoro AWS Glue, quindi controllate l'CPUutilizzo e l'utilizzo della memoria del lavoro.

Considerazioni aggiuntive

Se le prestazioni nelle ETL fasi iniziali sono un ostacolo, valuta la possibilità di raggruppare o unire i file di dati prima dell'elaborazione. Se hai il controllo completo sul processo di generazione dei file, può essere ancora più efficiente aggregare i punti dati sul sistema di origine stesso prima dell'invio dei dati grezzi. AWS