Versioni di rilascio - Amazon Athena

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

Versioni di rilascio

Amazon Athena per Apache Spark offre le seguenti versioni di rilascio:

PySpark versione del motore 3

PySpark la versione 3 include la versione 3.2.1 di Apache Spark. Con questa versione, puoi eseguire il codice Spark nei notebook in-console Athena.

Apache Spark versione 3.5

La versione 3.5 di Apache Spark è basata su Amazon EMR 7.12 e include la versione 3.5.6 di Apache Spark. Con questa versione, puoi eseguire il codice Spark dal notebook Amazon SageMaker AI Unified Studio o dai tuoi client Spark compatibili preferiti. Questa versione aggiunge funzionalità chiave per offrire un'esperienza migliorata per i carichi di lavoro interattivi:

  • Secure Spark Connect: aggiunge Spark Connect come endpoint autenticato e autorizzato. AWS

  • Attribuzione dei costi a livello di sessione: gli utenti possono tenere traccia dei costi per sessione interattiva nei report AWS Cost Explorer o Cost and Usage. Per ulteriori informazioni, consulta Attribuzione dei costi a livello di sessione.

  • Funzionalità di debug avanzate: aggiunge il supporto live di Spark UI e Spark History Server per il debug dei carichi di lavoro provenienti sia dai notebook che dai notebook. APIs Per ulteriori informazioni, consulta Accesso all'interfaccia utente di Spark.

  • supporto per l'accesso non filtrato: accedi alle tabelle del catalogo di dati protette in cui disponi delle autorizzazioni complete per le tabelle. AWS Glue Per ulteriori informazioni, consulta Utilizzo di Lake Formation con i gruppi di lavoro Athena Spark.

Proprietà predefinite di Spark

La tabella seguente elenca le proprietà Spark e i relativi valori predefiniti applicati alle sessioni di SparkConnect Athena.

Chiave Valore predefinito Description

spark.app.id

<Athena SessionId>

Questo non è modificabile.

spark.app.name

default

spark.driver.cores

4

Il numero di core utilizzati dal driver. Questo valore non è modificabile durante il lancio iniziale.

spark.driver.memory

10g

Quantità di memoria utilizzata da ogni driver. Non è modificabile durante l'avvio iniziale.

spark.driver.memoryOverhead

6g

Quantità di sovraccarico di memoria assegnata per i carichi di lavoro Python e altri processi in esecuzione sul driver. Questo valore non è modificabile durante il lancio iniziale.

spark.cortex.driver.disk

64g

Il disco del driver Spark. Questo non è modificabile durante il lancio iniziale.

spark.executor.cores

4

Il numero di core utilizzati da ciascun executor. Questo valore non è modificabile durante il lancio iniziale.

spark.executor.memory

10g

Quantità di memoria utilizzata da ogni driver.

spark.executor.memoryOverhead

6g

Quantità di sovraccarico di memoria assegnata per i carichi di lavoro Python e altri processi in esecuzione sull'executor. Questo valore non è modificabile durante il lancio iniziale.

spark.cortex.executor.disk

64g

Il disco Spark Executor. Questo non è modificabile durante il lancio iniziale.

spark.cortex.executor.architecture

AARCH_64

Architettura dell'esecutore.

spark.driver.extraJavaOptions

-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false

Opzioni Java aggiuntive per il driver Spark. Questo non è modificabile durante il lancio iniziale.

spark.executor.extraJavaOptions

-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false

Opzioni Java aggiuntive per l'esecutore Spark. Questo non è modificabile durante il lancio iniziale.

spark.executor.instances

1

Il numero di contenitori Spark Executor da allocare.

spark.dynamicAllocation.enabled

TRUE

Opzione che attiva l'allocazione dinamica delle risorse. Questa opzione aumenta o riduce il numero di esecutori registrati con l'applicazione, in base al carico di lavoro.

spark.dynamicAllocation.minExecutors

0

Il limite inferiore per il numero di esecutori se si attiva l'allocazione dinamica.

spark.dynamicAllocation.maxExecutors

59

Il limite superiore per il numero di esecutori se si attiva l'allocazione dinamica.

spark.dynamicAllocation.initialExecutors

1

Il numero iniziale di executor da eseguire se si attiva l'allocazione dinamica.

spark.dynamicAllocation.executorIdleTimeout

60s

Il periodo di tempo in cui un executor può rimanere inattivo prima che Spark lo rimuova. Questo vale solo se attivi l'allocazione dinamica.

spark.dynamicAllocation.shuffleTracking.enabled

TRUE

L'abilitazione del DRA richiede l'attivazione del tracciamento casuale.

spark.dynamicAllocation.sustainedSchedulerBacklogTimeout

1s

Il timeout definisce per quanto tempo lo scheduler Spark deve osservare un lungo arretrato di attività in sospeso prima di attivare una richiesta al gestore del cluster di avviare nuovi esecutori.

spark.sql.catalogImplementation

hive

spark.hadoop.hive.metastore.client.factory.class

com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory

AWS GlueLa classe di implementazione del metastore.

spark.hadoop.hive.metastore.glue.catalogid

<accountId>

AWS Gluecatalogo AccountId.

spark.sql.hive.metastore.sharedPrefixes

software.amazon.awssdk.services.dynamodb

La proprietà specifica un elenco separato da virgole di prefissi di pacchetto per le classi che devono essere caricate dall'applicazione ClassLoader anziché il codice isolato ClassLoader creato per il codice Hive Metastore Client.

spark.hadoop.fs.s3.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Definisce l'implementazione per il client S3 per utilizzare S3A.

spark.hadoop.fs.s3a.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Definisce l'implementazione per il client S3A (S3A).

spark.hadoop.fs.s3n.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Definisce l'implementazione per il client S3 nativo (S3N) per utilizzare S3A.

spark.hadoop.fs.AbstractFileSystem.s3.impl

org.apache.hadoop.fs.s3a.S3A

spark.hadoop.fs.s3a.aws.credentials.provider

software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider

spark.hadoop.fs.s3.customAWSCredentialsProvider

com.amazonaws.auth.DefaultAWSCredentialsProviderChain

spark.hadoop.mapreduce.output.fs.optimized.committer.enabled

TRUE

Questa proprietà abilita un protocollo di commit ottimizzato per i job Spark durante la scrittura di dati su Amazon S3. Se impostata su true, aiuta Spark a evitare costose operazioni di ridenominazione dei file, con conseguenti scritture atomiche più veloci e affidabili rispetto al committer Hadoop predefinito.

spark.hadoop.fs.s3a.endpoint.region

<REGION>

Questa configurazione imposta in modo esplicito la AWS regione per il bucket Amazon S3 a cui si accede tramite il client S3A.

spark.hadoop.fs.s3.getObject.initialSocketTimeoutMilliseconds

2000

Questo specifica il timeout della connessione al socket in millisecondi.

spark.hadoop.fs.s3a.committer.magic.enabled

TRUE

Ciò abilita S3A «Magic» Committer, un protocollo di commit altamente performante ma specifico che si basa sul supporto del gestore del cluster sottostante per percorsi speciali.

spark.hadoop.fs.s3a.committer.magic.track.commits.in.memory.enabled

TRUE

Rilevante solo quando il Magic Committer è abilitato, specifica se l'elenco dei file salvati da un'attività deve essere registrato in memoria anziché essere scritto su file temporanei del disco.

spark.hadoop.fs.s3a.committer.name

magicv2

Questa impostazione seleziona esplicitamente lo specifico algoritmo S3A Output Committer da utilizzare (ad esempio, directory, partizionato o magico). Specificando il nome, scegli la strategia che gestisce i dati temporanei, gestisce gli errori delle attività ed esegue il commit atomico finale sul percorso Amazon S3 di destinazione.

spark.hadoop.fs.s3.s3AccessGrants.enabled

FALSE

Property abilita il supporto per Amazon S3 Access Grants quando si accede ai dati Amazon S3 tramite il client di file system S3A/EMRFS.

spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM

FALSE

Quando Amazon S3 Access Grants è abilitato, questa proprietà controlla se il client Amazon S3 deve ricorrere alle credenziali IAM tradizionali se la ricerca di Access Grants fallisce o non fornisce autorizzazioni sufficienti.

spark.pyspark.driver.python

/usr/bin/python3.11

Percorso Python per il driver.

spark.pyspark.python

/usr/bin/python3.11

Percorso Python per executor.

spark.python.use.daemon

TRUE

Questa configurazione controlla se Spark utilizza un processo daemon di lavoro Python su ogni executor. Se abilitato (true, l'impostazione predefinita), l'executor mantiene attivo il worker Python tra un'attività e l'altra per evitare il sovraccarico dovuto al lancio e all'inizializzazione ripetuti di un nuovo interprete Python per ogni attività, migliorando significativamente le prestazioni delle applicazioni. PySpark

spark.sql.execution.arrow.pyspark.enabled

TRUE

Consente l'uso di Apache Arrow per ottimizzare il trasferimento di dati tra i processi JVM e Python in. PySpark

spark.sql.execution.arrow.pyspark.fallback.enabled

TRUE

Proprietà di configurazione che controlla il comportamento di Spark quando si verifica un errore durante il trasferimento dei dati tra JVM e Python utilizzando l'ottimizzazione Apache Arrow.

spark.sql.parquet.fs.optimized.committer.optimization-enabled

TRUE

Proprietà di configurazione che controlla se Spark utilizza un file committer ottimizzato per scrivere file Parquet su determinati file system, in particolare sistemi di archiviazione cloud come Amazon S3.

spark.sql.parquet.output.committer.class

com.amazon.emr.committer.EmrOptimizedSparkSqlParquetOutputCommitter

Proprietà di configurazione Spark che specifica il nome completo della classe Hadoop da utilizzare durante la scrittura OutputCommitter di file Parquet.

spark.resourceManager.cleanupExpiredHost

TRUE

Questa proprietà controlla se il Driver pulisce attivamente le risorse dell'applicazione Spark associate agli executor in esecuzione su nodi che sono stati eliminati o scaduti.

spark.blacklist.decommissioning.enabled

TRUE

La proprietà consente alla logica di Spark di inserire automaticamente nella lista nera gli esecutori attualmente in fase di disattivazione (chiusura graduale) da parte del gestore del cluster. Ciò impedisce allo scheduler di inviare nuove attività agli esecutori che stanno per uscire, migliorando la stabilità del lavoro durante la riduzione delle risorse.

spark.blacklist.decommissioning.timeout

1h

Tempo massimo di attesa che Spark permetta a Spark di migrare correttamente un'attività da un executor in fase di disattivazione prima di inserire l'host nella lista nera.

spark.stage.attempt.ignoreOnDecommissionFetchFailure

TRUE

Indica a Spark di essere indulgente e di non fallire un intero tentativo se si verifica un errore di recupero durante la lettura dei dati shuffle da un executor in fase di disattivazione. L'errore di recupero è considerato recuperabile e Spark recupererà nuovamente i dati da una posizione diversa (richiedendo potenzialmente un nuovo calcolo), dando priorità al completamento del lavoro rispetto alla rigorosa gestione degli errori durante arresti regolari.

spark.decommissioning.timeout.threshold

20

Questa proprietà viene in genere utilizzata internamente o in specifiche configurazioni di cluster manager per definire la durata totale massima prevista da Spark per il processo di disattivazione di un host. Se il tempo effettivo di disattivazione supera questa soglia, Spark può adottare misure aggressive, come inserire l'host nella lista nera o richiedere la chiusura forzata, per liberare la risorsa.

spark.files.fetchFailure.unRegisterOutputOnHost

TRUE

Quando un'attività non riesce a recuperare dati shuffle o RDD da un host specifico, l'impostazione su true indica a Spark di annullare la registrazione di tutti i blocchi di output associati all'applicazione in errore su quell'host. Ciò impedisce alle attività future di tentare di recuperare dati dall'host inaffidabile, costringendo Spark a ricalcolare i blocchi necessari altrove e aumentando la robustezza del lavoro contro problemi di rete intermittenti.