Esecuzione di processi ETL Spark con tempi di avvio ridotti - 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à.

Esecuzione di processi ETL Spark con tempi di avvio ridotti

AWS Glue versione 2.0 e successive forniscono un'infrastruttura aggiornata per l'esecuzione dei processi Apache Spark ETL (estrazione, trasformazione e caricamento) in AWS Glue con tempi di avvio ridotti. Con i tempi di attesa ridotti, gli ingegneri dei dati possono essere più produttivi e aumentare l'interattività con AWS Glue. La varianza ridotta dei tempi di inizio dei processi può aiutarti a soddisfare o superare i tuoi SLA per rendere disponibili i dati per l'analisi dei dati.

Per usare questa caratteristica con i processi ETL di AWS Glue, scegli 2.0 o una versione successiva per la Glue version durante la creazione dei processi.

Nuove caratteristiche supportate

In questa sezione vengono descritte le nuove funzionalità supportate con AWS Glue versione 2.0 e successive.

Supporto per la specifica di moduli Python aggiuntivi a livello di processo

AWS Glue versione 2.0 e successive consente inoltre di fornire moduli Python aggiuntivi o versioni diverse a livello di processo. Puoi utilizzare l'opzione --additional-python-modules con un elenco di moduli Python separati da virgole per aggiungere un nuovo modulo o modificare la versione di un modulo esistente.

Ad esempio, per aggiornare o aggiungere un nuovo modulo scikit-learn usa la seguente chiave-valore: "--additional-python-modules", "scikit-learn==0.21.3".

Inoltre, all'interno dell'opzione --additional-python-modules puoi specificare un percorso Amazon S3 per un modulo ruota Python. Ad esempio:

--additional-python-modules s3://aws-glue-native-spark/tests/j4.2/ephem-3.7.7.1-cp37-cp37m-linux_x86_64.whl,s3://aws-glue-native-spark/tests/j4.2/fbprophet-0.6-py3-none-any.whl,scikit-learn==0.21.3

AWS Glue utilizza Python Package Installer (pip3) per installare i moduli aggiuntivi. È possibile passare le opzioni aggiuntive specificate da python-modules-installer-option a pip3 per l'installazione dei moduli. Verranno applicate eventuali incompatibilità o limitazioni da pip3.

Moduli Python già forniti in AWS Glue versione 2.0

AWS Glue versione 2.0 supporta i seguenti moduli python per impostazione predefinita:

  • setuptools—45.2.0

  • subprocess32—3.5.4

  • ptvsd—4.3.2

  • pydevd—1.9.0

  • PyMySQL—0.9.3

  • docutils—0.15.2

  • jmespath—0.9.4

  • six—1.14.0

  • python_dateutil—2.8.1

  • urllib3—1.25.8

  • botocore—1.15.4

  • s3transfer—0.3.3

  • boto3—1.12.4

  • certifi—2019.11.28

  • chardet—3.0.4

  • idna—2.9

  • requests—2.23.0

  • pyparsing—2.4.6

  • enum34—1.1.9

  • pytz—2019.3

  • numpy—1.18.1

  • cycler—0.10.0

  • kiwisolver—1.1.0

  • scipy—1.4.1

  • pandas—1.0.1

  • pyarrow—0.16.0

  • matplotlib—3.1.3

  • pyhocon—0.3.54

  • mpmath—1.1.0

  • sympy—1.5.1

  • patsy—0.5.1

  • statsmodels—0.11.1

  • fsspec—0.6.2

  • s3fs—0.4.0

  • Cython—0.29.15

  • joblib—0.14.1

  • pmdarima—1.5.3

  • scikit-learn—0.22.1

  • tbats—1.0.9

Comportamento di registrazione

AWS Glue versione 2.0 e successive supporta diversi comportamenti di registrazione di default. Le differenze includono:

  • La registrazione avviene in tempo reale.

  • Esistono flussi separati per driver ed executor.

  • Per ogni driver ed executor ci sono due flussi, il flusso di output e il flusso degli errori.

Flussi di driver ed executor

I flussi dei driver sono identificati dall'ID di esecuzione del processo. I flussi degli executor sono identificati da <id esecuzione>_<id attività executor> del processo. Ad esempio:

  • "logStreamName": "jr_8255308b426fff1b4e09e00e0bd5612b1b4ec848d7884cebe61ed33a31789..._g-f65f617bd31d54bd94482af755b6cdf464542..."

Flusso di output ed errori

Il flusso di output presenta l'output standard (stdout) del codice. Il flusso degli errori presenta messaggi di log del codice/della libreria.

  • Flussi di log:

    • I flussi di log dei driver presentano <jr>, in cui <jr> è l'ID di esecuzione del processo.

    • I flussi di log degli executor presentano <jr>_<g>, in cui <g> è l'ID attività per l'executor. È possibile cercare l'ID attività dell'executor nel log degli errori del driver.

I gruppi di log predefiniti per AWS Glue versione 2.0 sono i seguenti:

  • /aws-glue/jobs/logs/output per l'output

  • /aws-glue/jobs/logs/error per gli errori

Quando viene fornita una configurazione di sicurezza, i nomi dei gruppi di log vengono modificati in:

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/output

  • /aws-glue/jobs/<security configuration>-role/<Role Name>/error

Nella console, il collegamento Logs (Log) punta al gruppo di log di output e il collegamento Error (Errore) punta al gruppo di log degli errori. Quando la registrazione continua è abilitata, il collegamento Logs (Log) punta al gruppo di log continuo e il collegamento Output punta al gruppo di log di output.

Regole di registrazione

Nota

Il nome del gruppo di log di default per la registrazione continua è /aws-glue/jobs/logs-v2.

In AWS Glue versione 2.0 e successive, la registrazione continua ha lo stesso comportamento di AWS Glue versione 1.0:

  • Gruppo di log di default: /aws-glue/jobs/logs-v2

  • Flusso di log del driver: <jr>-driver

  • Flusso di log dell'executor: <jr>-<executor ID>

    Il nome del gruppo di log può essere modificato impostando --continuous-log-logGroupName

    Il nome dei flussi di log può essere preceduto impostando --continous-log-logStreamPrefix

Funzionalità non supportate

Le seguenti funzioni di AWS Glue non sono supportate:

  • Endpoint di sviluppo

  • AWS Glue versione 2.0 e successive non viene eseguito su Apache YARN, quindi le impostazioni di YARN non si applicano

  • AWS Glue versione 2.0 e successive non dispone di un file di sistema distribuito Hadoop (HDFS)

  • AWS Glue versione 2.0 e successive non utilizza l'allocazione dinamica, quindi i parametri ExecutorAllocationManager non sono disponibili

  • Per i processi di AWS Glue versione 2.0 e successive, è possibile specificare il numero di dipendenti e il tipo di dipendente, ma non una maxCapacity.

  • AWS Glue versione 2.0 e successive non supporta s3n pronto all'uso. Si consiglia di utilizzare s3 o s3a. Se i processi devono usare s3n per qualsiasi motivo, è possibile passare il seguente argomento aggiuntivo:

    --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem