Versions - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Versions

Amazon Athena pour Apache Spark propose les versions de version suivantes :

PySpark version du moteur 3

PySpark la version 3 inclut la version 3.2.1 d'Apache Spark. Avec cette version, vous pouvez exécuter du code Spark dans les blocs-notes intégrés à la console Athena.

Apache Spark version 3.5

La version 3.5 d'Apache Spark est basée sur Amazon EMR 7.12 et intègre Apache Spark version 3.5.6. Avec cette version, vous pouvez exécuter du code Spark à partir du bloc-notes Amazon SageMaker AI Unified Studio ou de vos clients Spark compatibles préférés. Cette version ajoute des fonctionnalités clés pour améliorer l'expérience des charges de travail interactives :

  • Secure Spark Connect : ajoute Spark Connect en tant que point de AWS terminaison authentifié et autorisé.

  • Attribution des coûts au niveau de la session : les utilisateurs peuvent suivre les coûts par session interactive dans AWS Cost Explorer ou dans les rapports sur les coûts et l'utilisation. Pour de plus amples informations, veuillez consulter Attribution des coûts au niveau de la session.

  • Capacités de débogage avancées — Ajoute la prise en charge de l'interface utilisateur Spark en direct et du serveur Spark History pour le débogage des charges de travail à la fois depuis les ordinateurs portables et depuis APIs les ordinateurs portables. Pour de plus amples informations, veuillez consulter Accès à l'interface utilisateur de Spark.

  • prise en charge de l'accès non filtré : accédez aux tables de catalogue de AWS Glue données protégées pour lesquelles vous disposez d'autorisations complètes. Pour de plus amples informations, veuillez consulter Utilisation de Lake Formation avec les groupes de travail Athena Spark.

Propriétés par défaut de Spark

Le tableau suivant répertorie les propriétés Spark et leurs valeurs par défaut appliquées aux sessions Athena SparkConnect .

Clé Valeur par défaut Description

spark.app.id

<Athena SessionId>

Cela n'est pas modifiable.

spark.app.name

default

spark.driver.cores

4

Le nombre de cœurs utilisés par le pilote. Ceci n'est pas modifiable lors du lancement initial.

spark.driver.memory

10g

Quantité de mémoire utilisée par chaque pilote. Ceci n'est pas modifiable lors du lancement initial.

spark.driver.memoryOverhead

6g

Quantité de charge de mémoire affectée aux charges de travail Python et aux autres processus exécutés sur le pilote. Ceci n'est pas modifiable lors du lancement initial.

spark.cortex.driver.disk

64g

Le disque du pilote Spark. Ceci n'est pas modifiable lors du lancement initial.

spark.executor.cores

4

Le nombre de cœurs utilisés par chaque exécuteur. Ceci n'est pas modifiable lors du lancement initial.

spark.executor.memory

10g

Quantité de mémoire utilisée par chaque pilote.

spark.executor.memoryOverhead

6g

Quantité de charge de mémoire affectée aux charges de travail Python et aux autres processus exécutés sur l'exécuteur. Ceci n'est pas modifiable lors du lancement initial.

spark.cortex.executor.disk

64g

Le disque exécuteur Spark. Ceci n'est pas modifiable lors du lancement initial.

spark.cortex.executor.architecture

AARCH_64

Architecture de l'exécuteur testamentaire.

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

Options Java supplémentaires pour le pilote Spark. Ceci n'est pas modifiable lors du lancement initial.

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

Options Java supplémentaires pour l'exécuteur Spark. Ceci n'est pas modifiable lors du lancement initial.

spark.executor.instances

1

Nombre de conteneurs d'exécuteurs Spark à allouer.

spark.dynamicAllocation.enabled

TRUE

Option qui active l'allocation dynamique des ressources. Cette option augmente ou diminue le nombre d'exécuteurs enregistrés auprès de l'application, en fonction de la charge de travail.

spark.dynamicAllocation.minExecutors

0

Limite inférieure du nombre d'exécuteurs si vous activez l'allocation dynamique.

spark.dynamicAllocation.maxExecutors

59

Limite supérieure du nombre d'exécuteurs si vous activez l'allocation dynamique.

spark.dynamicAllocation.initialExecutors

1

Le nombre initial d'exécuteurs à exécuter si vous activez l'allocation dynamique.

spark.dynamicAllocation.executorIdleTimeout

60s

Durée pendant laquelle un exécuteur peut rester inactif avant que Spark ne le supprime. Cela ne s'applique que si vous activez l'allocation dynamique.

spark.dynamicAllocation.shuffleTracking.enabled

TRUE

L'activation du DRA nécessite l'activation du suivi du shuffle.

spark.dynamicAllocation.sustainedSchedulerBacklogTimeout

1s

Le délai d'attente définit la durée pendant laquelle le planificateur Spark doit observer un arriéré prolongé de tâches en attente avant de déclencher une demande au gestionnaire du cluster pour lancer de nouveaux exécuteurs.

spark.sql.catalogImplementation

hive

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

com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory

La classe d'implémentation du AWS Glue metastore.

spark.hadoop.hive.metastore.glue.catalogid

<accountId>

AWS Glue AccountID du catalogue.

spark.sql.hive.metastore.sharedPrefixes

software.amazon.awssdk.services.dynamodb

La propriété spécifie une liste séparée par des virgules de préfixes de package pour les classes qui doivent être chargées par l'application ClassLoader plutôt que la liste isolée ClassLoader créée pour le code du client Hive Metastore.

spark.hadoop.fs.s3.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Définit l'implémentation permettant au client S3 d'utiliser S3A.

spark.hadoop.fs.s3a.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Définit l'implémentation pour le client S3A (S3A).

spark.hadoop.fs.s3n.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Définit l'implémentation pour que le client S3 natif (S3N) utilise 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

Cette propriété active un protocole de validation optimisé pour les tâches Spark lors de l'écriture de données sur Amazon S3. Lorsqu'il est défini sur true, il permet à Spark d'éviter les coûteuses opérations de renommage de fichiers, ce qui se traduit par des écritures atomiques plus rapides et plus fiables par rapport au committer Hadoop par défaut.

spark.hadoop.fs.s3a.endpoint.region

<REGION>

Cette configuration définit explicitement la AWS région du compartiment Amazon S3 accessible via le client S3A.

spark.hadoop.fs.s3.getObject.initialSocketTimeoutMilliseconds

2000

Cela indique le délai d'expiration de la connexion au socket en millisecondes.

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

TRUE

Cela active le S3A « Magic » Committer, un protocole de validation très performant mais spécifique qui repose sur la prise en charge des chemins spéciaux par le gestionnaire de cluster sous-jacent.

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

TRUE

Pertinent uniquement lorsque le Magic Committer est activé, cela indique si la liste des fichiers validés par une tâche doit être suivie en mémoire au lieu d'être écrite sur des fichiers de disque temporaires.

spark.hadoop.fs.s3a.committer.name

magicv2

Ce paramètre sélectionne explicitement l'algorithme S3A Output Committer spécifique à utiliser (par exemple, directory, partitioned ou magic). En spécifiant le nom, vous choisissez la stratégie qui gère les données temporaires, gère les échecs de tâches et effectue la validation atomique finale sur le chemin Amazon S3 cible.

spark.hadoop.fs.s3.s3AccessGrants.enabled

FALSE

La propriété permet de prendre en charge les subventions d'accès Amazon S3 lors de l'accès aux données Amazon S3 via le client du système de fichiers S3A/EMRFS.

spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM

FALSE

Lorsque les autorisations d'accès Amazon S3 sont activées, cette propriété détermine si le client Amazon S3 doit revenir aux informations d'identification IAM traditionnelles si la recherche des autorisations d'accès échoue ou ne fournit pas les autorisations suffisantes.

spark.pyspark.driver.python

/usr/bin/python3.11

Chemin Python pour le pilote.

spark.pyspark.python

/usr/bin/python3.11

Chemin Python pour l'exécuteur.

spark.python.use.daemon

TRUE

Cette configuration contrôle si Spark utilise un processus démon de travail Python sur chaque exécuteur. Lorsqu'il est activé (vrai, valeur par défaut), l'exécuteur maintient le programme de travail Python en vie entre les tâches afin d'éviter la surcharge liée au lancement et à l'initialisation répétés d'un nouvel interpréteur Python pour chaque tâche, ce qui améliore considérablement les performances des PySpark applications.

spark.sql.execution.arrow.pyspark.enabled

TRUE

Permet d'utiliser Apache Arrow pour optimiser le transfert de données entre les processus JVM et Python dans PySpark.

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

TRUE

Propriété de configuration qui contrôle le comportement de Spark en cas d'erreur lors du transfert de données entre la JVM et Python à l'aide de l'optimisation Apache Arrow.

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

TRUE

Propriété de configuration qui contrôle si Spark utilise un validateur de fichiers optimisé lors de l'écriture de fichiers Parquet dans certains systèmes de fichiers, en particulier les systèmes de stockage cloud tels qu'Amazon S3.

spark.sql.parquet.output.committer.class

com.amazon.emr.committer.EmrOptimizedSparkSqlParquetOutputCommitter

Propriété de configuration Spark qui spécifie le nom de classe complet du Hadoop OutputCommitter à utiliser lors de l'écriture de fichiers Parquet.

spark.resourceManager.cleanupExpiredHost

TRUE

Cette propriété contrôle si le pilote nettoie activement les ressources de l'application Spark associées aux exécuteurs exécutés sur des nœuds supprimés ou expirés.

spark.blacklist.decommissioning.enabled

TRUE

La propriété permet à la logique de Spark de mettre automatiquement sur liste noire les exécuteurs actuellement en cours de mise hors service (arrêt progressif) par le gestionnaire de cluster. Cela empêche le planificateur d'envoyer de nouvelles tâches aux exécuteurs sur le point de quitter, ce qui améliore la stabilité des tâches lors de la réduction des ressources.

spark.blacklist.decommissioning.timeout

1h

Durée maximale pendant laquelle Spark attendra qu'une tâche soit migrée avec succès depuis un exécuteur hors service avant de mettre l'hôte sur liste noire.

spark.stage.attempt.ignoreOnDecommissionFetchFailure

TRUE

Demande à Spark d'être indulgent et de ne pas échouer une tentative d'étape complète si un échec de récupération survient lors de la lecture des données de shuffle depuis un exécuteur en cours de mise hors service. L'échec de récupération est considéré comme réparable, et Spark récupérera à nouveau les données depuis un autre emplacement (ce qui peut nécessiter un nouveau calcul), en donnant la priorité à l'achèvement du travail plutôt qu'à une gestion stricte des erreurs lors des arrêts progressifs.

spark.decommissioning.timeout.threshold

20

Cette propriété est généralement utilisée en interne ou dans des configurations de gestionnaires de clusters spécifiques pour définir la durée totale maximale que Spark attend du processus de mise hors service d'un hôte. Si le temps de mise hors service réel dépasse ce seuil, Spark peut prendre des mesures agressives, comme mettre l'hôte sur liste noire ou demander la résiliation forcée, pour libérer la ressource.

spark.files.fetchFailure.unRegisterOutputOnHost

TRUE

Lorsqu'une tâche ne parvient pas à récupérer les données shuffle ou RDD d'un hôte spécifique, la définition de cette valeur sur true indique à Spark de désenregistrer tous les blocs de sortie associés à l'application défaillante sur cet hôte. Cela empêche les tâches futures de tenter de récupérer des données depuis un hôte peu fiable, forçant Spark à recalculer les blocs nécessaires ailleurs et augmentant la robustesse des tâches face aux problèmes de réseau intermittents.