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à.
Migrazione dei processi AWS Glue per Spark ad AWS Glue versione 3.0
In questo argomento vengono descritte le modifiche tra AWS Glue versioni 0.9, 1.0, 2.0 e 3.0 per permettere la migrazione delle applicazioni Spark e dei processi ETL ad AWS Glue 3.0.
Per usare questa caratteristica con i processi ETL di AWS Glue, scegli 3.0
per la Glue version
durante la creazione dei processi.
Argomenti
- Nuove caratteristiche supportate
- Operazioni per eseguire la migrazione ad AWS Glue 3.0
- Elenco di controllo per la migrazione
- Migrazione da AWS Glue 0.9 ad AWS Glue 3.0
- Migrazione da AWS Glue 1.0 ad AWS Glue 3.0
- Migrazione da AWS Glue 2.0 a AWS Glue 3.0
- Appendice A: aggiornamenti notevoli delle dipendenze
- Appendice B: aggiornamenti dei driver JDBC
Nuove caratteristiche supportate
In questa sezione vengono descritte le nuove caratteristiche e i vantaggi di AWS Glue versione 3.0.
Si basa su Apache Spark 3.1.1, che presenta ottimizzazioni da Spark open source e sviluppate da AWS Glue e servizi EMR, come esecuzione adattiva delle query, lettori vettorizzati e shuffle e coalescenza delle partizioni ottimizzati.
Driver JDBC aggiornati per tutte le fonti native Glue, inclusi MySQL, Microsoft SQL Server, Oracle, PostgreSQL, MongoDB e le librerie e le dipendenze Spark aggiornate introdotte da Spark 3.1.1.
Accesso Amazon S3 ottimizzato con EMRFS aggiornato e committer di output ottimizzati per Amazon S3 abilitati per impostazione predefinita.
Accesso ottimizzato al catalogo dati con indici delle partizioni, predicati push down, elenco delle partizioni e client metastore Hive aggiornato.
Integrazione con Lake Formation per tabelle di catalogo governate con filtraggio a livello di cella e transazioni data lake.
Esperienza dell'interfaccia utente Spark migliorata con Spark 3.1.1 con nuovi parametri di memoria dell'executor e parametri di streaming strutturati di Spark.
Ridotta latenza di avvio, con miglioramento dei tempi complessivi di completamento del processo e dell'interattività, similmente ad AWS Glue 2.0.
I processi Spark vengono fatturati in incrementi di 1 secondo con una durata minima di fatturazione 10 volte inferiore, da un minimo di 10 minuti a un minimo di 1 minuto, similmente ad AWS Glue 2.0.
Operazioni per eseguire la migrazione ad AWS Glue 3.0
Per i processi esistenti, modifica la Glue version
dalla versione precedente a Glue 3.0
nella configurazione del processo.
Nella console, scegli
Spark 3.1, Python 3 (Glue Version 3.0) or Spark 3.1, Scala 2 (Glue Version 3.0)
inGlue version
.In AWS Glue Studio, scegli
Glue 3.0 - Supports spark 3.1, Scala 2, Python 3
inGlue version
.Nell'API, scegli
3.0
nel parametroGlueVersion
nell'APIUpdateJob
.
Per i nuovi processi, scegli Glue 3.0
al momento della creazione.
Nella console, scegli
Spark 3.1, Python 3 (Glue Version 3.0) or Spark 3.1, Scala 2 (Glue Version 3.0)
inGlue version
.In AWS Glue Studio, scegli
Glue 3.0 - Supports spark 3.1, Scala 2, Python 3
inGlue version
.Nell'API, scegli
3.0
nel parametroGlueVersion
nell'APICreateJob
.
Per visualizzare i log eventi Spark di AWS Glue 3.0, avvia un server di cronologia Spark aggiornato per Glue 3.0 utilizzando CloudFormation o Docker.
Elenco di controllo per la migrazione
Esamina questo elenco di controllo per la migrazione.
Il processo dipende da HDFS? In caso affermativo, prova a sostituire HDFS con S3.
Cerca il percorso del file system che inizia con
hdfs://
o/
come percorso DFS nel codice di script del processo.Controlla che il file system di default non sia configurato con HDFS. Se è configurato in modo esplicito, è necessario rimuovere la configurazione
fs.defaultFS
.Controlla se il processo contiene dei parametri
dfs.*
. Se ne contiene, è necessario verificare che sia corretto disabilitare i parametri.
Il processo dipende da YARN? In caso affermativo, verifica l'impatto controllando se il processo contiene i seguenti parametri. Se ne contiene, è necessario verificare che sia corretto disabilitare i parametri.
spark.yarn.*
Ad esempio:
spark.yarn.executor.memoryOverhead spark.yarn.driver.memoryOverhead spark.yarn.scheduler.reporterThread.maxFailures
yarn.*
Ad esempio:
yarn.scheduler.maximum-allocation-mb yarn.nodemanager.resource.memory-mb
Il processo dipende da Spark 2.2.1 o Spark 2.4.3? In caso affermativo, verifica l'impatto controllando se il processo utilizza caratteristiche modificate in Spark 3.1.1.
https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-22-to-23
Ad esempio la funzione
percentile_approx
o la funzioneSparkSession
conSparkSession.builder.getOrCreate()
quando esiste unSparkContext
.https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-23-to-24
Ad esempio la funzione
array_contains
o la funzioneCURRENT_DATE
,CURRENT_TIMESTAMP
conspark.sql.caseSensitive=true
.
I file jar aggiuntivi del processo sono in conflitto in Glue 3.0?
Da AWS Glue 0.9/1.0: i file jar aggiuntivi forniti in processi esistenti AWS Glue 0.9/1.0 potrebbero causare conflitti di classpath a causa di dipendenze nuove o aggiornate disponibili in Glue 3.0. È possibile evitare conflitti di classpath in AWS Glue 3.0 con il parametro
--user-jars-first
del processo AWS Glue oppure ombreggiando le dipendenze.Da AWS Glue 2.0 è ancora possibile evitare conflitti di classpath in AWS Glue 3.0 con il parametro
--user-jars-first
del processo AWS Glue oppure ombreggiando le dipendenze.
Il processo dipende da Scala 2.11?
AWS Glue 3.0 utilizza Scala 2.12, quindi è necessario ricreare le librerie con Scala 2.12 se dipendono da Scala 2.11.
Le librerie Python esterne del processo dipendono da Python 2.7/3.6?
Utilizza i parametri
--additional-python-modules
invece di impostare il file egg/wheel/zip nel percorso della libreria Python.Aggiorna le librerie dipendenti da Python 2.7/3.6 a Python 3.7, poiché Spark 3.1.1 ha rimosso il supporto Python 2.7.
Migrazione da AWS Glue 0.9 ad AWS Glue 3.0
Nota le seguenti modifiche durante la migrazione:
AWS Glue 0.9 utilizza Spark 2.2.1 open source e AWS Glue 3.0 utilizza Spark 3.1.1 ottimizzato per EMR.
Diverse modifiche di Spark da sole potrebbero richiedere la revisione degli script per garantire che non si faccia riferimento alle caratteristiche rimosse.
Ad esempio, Spark 3.1.1 non abilita le FDU non tipizzate per Scala, ma Spark 2.2 le consente.
Tutti i processi in AWS Glue 3.0 verranno eseguiti con tempi di avvio significativamente migliorati. I processi Spark verranno fatturati in incrementi di 1 secondo con una durata minima di fatturazione 10 volte inferiore poiché la latenza di avvio passerà da un massimo di 10 minuti a un massimo di 1 minuto.
Il comportamento di registrazione è cambiato rispetto ad AWS Glue 2.0.
Diversi aggiornamenti delle dipendenze, evidenziati in Appendice A: aggiornamenti notevoli delle dipendenze.
Scala viene inoltre aggiornato da 2.11 a 2.12 e Scala 2.12 non è compatibile con Scala 2.11.
Python 3.7 è anche la versione di default utilizzata per gli script Python, mentre AWS Glue 0.9 utilizzava solo Python 2.
Python 2.7 non è supportato con Spark 3.1.1.
È disponibile un nuovo meccanismo di installazione di moduli Python aggiuntivi.
AWS Glue 3.0 non viene eseguita su Apache YARN, quindi le impostazioni di YARN non si applicano.
AWS Glue 3.0 non dispone di un file di sistema distribuito Hadoop (HDFS).
Eventuali file jar supplementari forniti in processi esistenti AWS Glue 0.9 potrebbero causare conflitti di dipendenze, a causa dell'aggiornamento di diverse dipendenze in 3.0 da 0.9. È possibile evitare conflitti di dipendenze in AWS Glue 3.0 con il parametro
--user-jars-first
del processo AWS Glue.AWS Glue 3.0 non utilizza l'allocazione dinamica, quindi i parametri ExecutorAllocationManager non sono disponibili.
Nei processi di AWS Glue versione 3.0, è possibile specificare il numero di dipendenti e il tipo di dipendente, ma non una
maxCapacity
.AWS Glue 3.0 non supporta ancora le trasformazioni basate su machine learning.
AWS Glue 3.0 non supporta ancora gli endpoint di sviluppo.
Consulta la documentazione relativa alla migrazione di Spark:
Migrazione da AWS Glue 1.0 ad AWS Glue 3.0
Nota le seguenti modifiche durante la migrazione:
AWS Glue 1.0 utilizza Spark 2.4 open source e AWS Glue 3.0 utilizza Spark 3.1.1 ottimizzato per EMR.
Diverse modifiche di Spark da sole potrebbero richiedere la revisione degli script per garantire che non si faccia riferimento alle caratteristiche rimosse.
Ad esempio, Spark 3.1.1 non abilita le FDU non tipizzate per Scala, ma Spark 2.4 le consente.
Tutti i processi in AWS Glue 3.0 verranno eseguiti con tempi di avvio significativamente migliorati. I processi Spark verranno fatturati in incrementi di 1 secondo con una durata minima di fatturazione 10 volte inferiore poiché la latenza di avvio passerà da un massimo di 10 minuti a un massimo di 1 minuto.
Il comportamento di registrazione è cambiato rispetto ad AWS Glue 2.0.
Diversi aggiornamenti delle dipendenze, evidenziati in
Scala viene inoltre aggiornato da 2.11 a 2.12 e Scala 2.12 non è compatibile con Scala 2.11.
Python 3.7 è anche la versione di default utilizzata per gli script Python, mentre AWS Glue 0.9 utilizzava solo Python 2.
Python 2.7 non è supportato con Spark 3.1.1.
È disponibile un nuovo meccanismo di installazione di moduli Python aggiuntivi.
AWS Glue 3.0 non viene eseguita su Apache YARN, quindi le impostazioni di YARN non si applicano.
AWS Glue 3.0 non dispone di un file di sistema distribuito Hadoop (HDFS).
Eventuali file jar supplementari forniti in processi esistenti AWS Glue 1.0 potrebbero causare conflitti di dipendenze, a causa dell'aggiornamento di diverse dipendenze in 3.0 da 1.0. È possibile evitare conflitti di dipendenze in AWS Glue 3.0 con il parametro
--user-jars-first
del processo AWS Glue.AWS Glue 3.0 non utilizza l'allocazione dinamica, quindi i parametri ExecutorAllocationManager non sono disponibili.
Nei processi di AWS Glue versione 3.0, è possibile specificare il numero di dipendenti e il tipo di dipendente, ma non una
maxCapacity
.AWS Glue 3.0 non supporta ancora le trasformazioni basate su machine learning.
AWS Glue 3.0 non supporta ancora gli endpoint di sviluppo.
Consulta la documentazione relativa alla migrazione di Spark:
Migrazione da AWS Glue 2.0 a AWS Glue 3.0
Nota le seguenti modifiche durante la migrazione:
Tutti i parametri di processo e le funzioni principali esistenti in AWS Glue 2.0 esisteranno in AWS Glue 3.0.
In AWS Glue 3.0, il committer ottimizzato EMRFS S3 per la scrittura dei dati Parquet in Amazon S3 è abilitato di default. Tuttavia, puoi disabilitarlo impostando
--enable-s3-parquet-optimized-committer
afalse
.
AWS Glue 2.0 utilizza Spark 2.4 open source e AWS Glue 3.0 utilizza Spark 3.1.1 ottimizzato per EMR.
Diverse modifiche di Spark da sole potrebbero richiedere la revisione degli script per garantire che non si faccia riferimento alle caratteristiche rimosse.
Ad esempio, Spark 3.1.1 non abilita le FDU non tipizzate per Scala, ma Spark 2.4 le consente.
AWS Glue 3.0 include anche un aggiornamento a EMRFS, driver JDBC aggiornati e include ulteriori ottimizzazioni su Spark stesso fornite da AWS Glue.
Tutti i processi in AWS Glue 3.0 verranno eseguiti con tempi di avvio significativamente migliorati. I processi Spark verranno fatturati in incrementi di 1 secondo con una durata minima di fatturazione 10 volte inferiore poiché la latenza di avvio passerà da un massimo di 10 minuti a un massimo di 1 minuto.
Python 2.7 non è supportato con Spark 3.1.1.
Diversi aggiornamenti delle dipendenze, evidenziati in Appendice A: aggiornamenti notevoli delle dipendenze.
Scala viene inoltre aggiornato da 2.11 a 2.12 e Scala 2.12 non è compatibile con Scala 2.11.
Eventuali file jar supplementari forniti in processi esistenti AWS Glue 2.0 potrebbero causare conflitti di dipendenze, a causa dell'aggiornamento di diverse dipendenze in 3.0 da 2.0. È possibile evitare conflitti di dipendenze in AWS Glue 3.0 con il parametro
--user-jars-first
del processo AWS Glue.AWS Glue 3.0 ha un parallelismo di processo Spark diverso per la configurazione del driver/esecutore, rispetto a AWS Glue 2.0, migliora le prestazioni e utilizza al meglio le risorse disponibili. Sia
spark.driver.cores
chespark.executor.cores
sono configurati in base al numero di core su AWS Glue 3.0 (4 sullo standard e sul dipendenteG.1X
e 8 sul dipendenteG.2X
). Queste configurazioni non modificano il tipo di dipendente o l'hardware per il processo AWS Glue. È possibile utilizzare queste configurazioni per calcolare il numero di partizioni o divisioni che corrispondono al parallelismo delle attività Spark nell'applicazione Spark.In generale, i processi avranno prestazioni simili o migliorate rispetto ad AWS Glue versione 2.0. Se i processi vengono eseguiti più lentamente, è possibile incrementare il parallelismo delle attività trasmettendo il seguente argomento del processo:
chiave:
--executor-cores
valore: <numero desiderato di attività che possono essere eseguite in parallelo
>Il valore non deve superare il doppio del numero di vCPU del tipo di worker, ossia 8 su
G.1X
, 16 suG.2X
, 32 suG.4X
e 64 suG.8X
. È necessario prestare attenzione durante l'aggiornamento di questa configurazione in quanto potrebbe influire sulle prestazioni del processo; l'incremento del parallelismo, infatti, esercita pressione sulla memoria e sul disco, oltre a limitare i sistemi di origine e destinazione.
AWS Glue 3.0 utilizza Spark 3.1, che modifica il comportamento di carico/salvataggio dei timestamp da/verso i file parquet. Per ulteriori dettagli, consulta Aggiornamento da Spark SQL 3.0 a 3.1
. Noi suggeriamo di impostare i seguenti parametri durante la lettura/scrittura di dati del parquet che contengono colonne timestamp. L'impostazione di tali parametri può risolvere il problema di incompatibilità del calendario che si verifica durante l'aggiornamento da Spark 2 a Spark 3, sia per AWS Glue Dynamic Frame che per Spark Data Frame. Utilizzare l'opzione CORRECTED per leggere il valore datetime così com'è e l'opzione LEGACY per cambiare la base dei valori datetime in relazione alla differenza di calendario durante la lettura.
- Key: --conf - Value: spark.sql.legacy.parquet.int96RebaseModeInRead=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.int96RebaseModeInWrite=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.datetimeRebaseModeInRead=[CORRECTED|LEGACY]
Consulta la documentazione relativa alla migrazione di Spark:
Appendice A: aggiornamenti notevoli delle dipendenze
Di seguito sono riportati gli aggiornamenti delle dipendenze:
Dipendenza | Versione in AWS Glue 0.9 | Versione in AWS Glue 1.0 | Versione in AWS Glue 2.0 | Versione in AWS Glue 3.0 |
---|---|---|---|---|
Spark | 2.2.1 | 2.4.3 | 2.4.3 | 3.1.1-amzn-0 |
Hadoop | 2.7.3-amzn-6 | 2.8.5-amzn-1 | 2.8.5-amzn-5 | 3.2.1-amzn-3 |
Scala | 2.11 | 2.11 | 2.11 | 2.12 |
Jackson | 2.7.x | 2.7.x | 2.7.x | 2.10.x |
Hive | 1.2 | 1.2 | 1.2 | 2.3.7-amzn-4 |
EMRFS | 2.20.0 | 2.30.0 | 2.38.0 | 2.46.0 |
Json4s | 3.2.x | 3.5.x | 3.5.x | 3.6.6 |
Arrow | N/D | 0.10.0 | 0.10.0 | 2.0.0 |
Client del catalogo AWS Glue | N/D | N/D | 1.10.0 | 3.0.0 |
Appendice B: aggiornamenti dei driver JDBC
Di seguito sono riportati gli aggiornamenti dei driver JDBC:
Driver | Versione del driver JDBC nelle precedenti versioni di AWS Glue | Versione del driver JDBC in AWS Glue 3.0 |
---|---|---|
MySQL | 5.1 | 8.0.23 |
Microsoft SQL Server | 6.1.0 | 7.0.0 |
Database Oracle | 11.2 | 21.1 |
PostgreSQL | 42.1.0 | 42.2.18 |
MongoDB | 2.0.0 | 4.0.0 |