Release-Versionen - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Release-Versionen

Amazon Athena für Apache Spark bietet die folgenden Release-Versionen:

PySpark Engine-Version 3

PySpark Version 3 enthält Apache Spark Version 3.2.1. Mit dieser Version können Sie Spark-Code in Athena-Konsolen-Notebooks ausführen.

Apache Spark Version 3.5

Apache Spark Version 3.5 basiert auf Amazon EMR 7.12 und paketiert Apache Spark Version 3.5.6. Mit dieser Version können Sie Spark-Code vom Amazon SageMaker AI Unified Studio-Notebook oder Ihren bevorzugten kompatiblen Spark-Clients aus ausführen. Diese Version fügt wichtige Funktionen hinzu, um ein verbessertes Erlebnis bei interaktiven Workloads zu bieten:

  • Secure Spark Connect — Fügt Spark Connect als authentifizierten und autorisierten AWS Endpunkt hinzu.

  • Kostenzuweisung auf Sitzungsebene — Benutzer können die Kosten pro interaktiver Sitzung im AWS Cost Explorer oder in Kosten- und Nutzungsberichten verfolgen. Weitere Informationen finden Sie unter Kostenzuweisung auf Sitzungsebene.

  • Erweiterte Debugging-Funktionen — Fügt Live-Spark-UI und Spark History Server-Unterstützung für das Debuggen von Workloads sowohl von Notebooks als auch von APIs Notebooks hinzu. Weitere Informationen finden Sie unter Zugriff auf die Spark-Benutzeroberfläche.

  • Unterstützung für ungefilterten Zugriff — Greifen Sie auf geschützte AWS Glue Datenkatalogtabellen zu, für die Sie über vollständige Tabellenberechtigungen verfügen. Weitere Informationen finden Sie unter Verwenden von Lake Formation mit Athena Spark-Arbeitsgruppen.

Spark-Standardeigenschaften

In der folgenden Tabelle sind Spark-Eigenschaften und ihre Standardwerte aufgeführt, die für SparkConnect Athena-Sitzungen angewendet werden.

Key (Schlüssel) Standardwert Description

spark.app.id

<Athena SessionId>

Dies ist nicht änderbar.

spark.app.name

default

spark.driver.cores

4

Die Anzahl der vom Treiber verwendeten Kerne. Dies kann beim ersten Start nicht geändert werden.

spark.driver.memory

10g

Menge an Speicher, die jeder Treiber verwendet. Dies kann beim ersten Start nicht geändert werden.

spark.driver.memoryOverhead

6g

Höhe des Speicheraufwands, der Python-Workloads und anderen Prozessen zugewiesen wurde, die auf dem Treiber ausgeführt werden. Dies kann beim ersten Start nicht geändert werden.

spark.cortex.driver.disk

64g

Die Spark-Treiberdiskette. Dies kann beim ersten Start nicht geändert werden.

spark.executor.cores

4

Die Anzahl der Kerne, die jeder Executor verwendet. Dies kann beim ersten Start nicht geändert werden.

spark.executor.memory

10g

Menge an Speicher, die jeder Treiber verwendet.

spark.executor.memoryOverhead

6g

Höhe des Speicher-Overheads, der Python-Workloads und anderen Prozessen zugewiesen wurde, die auf dem Executor ausgeführt werden. Dies kann beim ersten Start nicht geändert werden.

spark.cortex.executor.disk

64g

Die Spark-Executor-Diskette. Dies kann beim ersten Start nicht geändert werden.

spark.cortex.executor.architecture

AARCH_64

Architektur des Executors.

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

Zusätzliche Java-Optionen für den Spark-Treiber. Dies kann beim ersten Start nicht geändert werden.

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

Zusätzliche Java-Optionen für den Spark-Executor. Dies kann beim ersten Start nicht geändert werden.

spark.executor.instances

1

Die Anzahl der zuzuweisenden Spark-Executor-Container.

spark.dynamicAllocation.enabled

TRUE

Option, die die dynamische Ressourcenzuweisung aktiviert. Diese Option skaliert die Anzahl der bei der Anwendung registrierten Executoren je nach Arbeitslast nach oben oder unten.

spark.dynamicAllocation.minExecutors

0

Die Untergrenze für die Anzahl der Executoren, wenn Sie die dynamische Zuweisung aktivieren.

spark.dynamicAllocation.maxExecutors

59

Die Obergrenze für die Anzahl der Executoren, wenn Sie die dynamische Zuweisung aktivieren.

spark.dynamicAllocation.initialExecutors

1

Die anfängliche Anzahl von Executoren, die ausgeführt werden sollen, wenn Sie die dynamische Zuweisung aktivieren.

spark.dynamicAllocation.executorIdleTimeout

60s

Die Zeitspanne, für die ein Executor inaktiv bleiben kann, bevor Spark ihn entfernt. Dies gilt nur, wenn Sie die dynamische Zuweisung aktivieren.

spark.dynamicAllocation.shuffleTracking.enabled

TRUE

Wenn DRA aktiviert ist, muss das Shuffle-Tracking aktiviert sein.

spark.dynamicAllocation.sustainedSchedulerBacklogTimeout

1s

Timeout definiert, wie lange der Spark-Scheduler einen anhaltenden Rückstand an ausstehenden Aufgaben beobachten muss, bevor er eine Anfrage an den Clustermanager auslöst, neue Executors zu starten.

spark.sql.catalogImplementation

hive

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

com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory

Die Metastore-Implementierungsklasse. AWS Glue

spark.hadoop.hive.metastore.glue.catalogid

<accountId>

AWS Glue Katalog-Konto-ID.

spark.sql.hive.metastore.sharedPrefixes

software.amazon.awssdk.services.dynamodb

Die Eigenschaft gibt eine durch Kommas getrennte Liste von Paketpräfixen für Klassen an, die von der Anwendung geladen werden sollen und ClassLoader nicht von dem isolierten, für Hive Metastore ClassLoader Client-Code erstellten Code.

spark.hadoop.fs.s3.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Definiert die Implementierung für den S3-Client zur Verwendung von S3A.

spark.hadoop.fs.s3a.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Definiert die Implementierung für den S3A-Client (S3A).

spark.hadoop.fs.s3n.impl

org.apache.hadoop.fs.s3a.S3AFileSystem

Definiert die Implementierung für den Native S3-Client (S3N) zur Verwendung von 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

Diese Eigenschaft ermöglicht ein optimiertes Commit-Protokoll für Spark-Jobs beim Schreiben von Daten in Amazon S3. Wenn sie auf true gesetzt ist, hilft sie Spark dabei, kostspielige Operationen zum Umbenennen von Dateien zu vermeiden, was im Vergleich zum standardmäßigen Hadoop-Committer zu schnelleren und zuverlässigeren atomaren Schreibvorgängen führt.

spark.hadoop.fs.s3a.endpoint.region

<REGION>

Diese Konfiguration legt explizit die AWS Region für den Amazon S3 S3-Bucket fest, auf den über den S3A-Client zugegriffen wird.

spark.hadoop.fs.s3.getObject.initialSocketTimeoutMilliseconds

2000

Dies gibt das Timeout für die Socket-Verbindung in Millisekunden an.

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

TRUE

Dadurch wird der S3A „Magic“ Committer aktiviert, ein hochperformantes, aber spezifisches Commit-Protokoll, das auf der Unterstützung spezieller Pfade durch den zugrundeliegenden Clustermanager beruht.

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

TRUE

Dies ist nur relevant, wenn der Magic Committer aktiviert ist. Es gibt an, ob die Liste der Dateien, die durch eine Aufgabe übergeben wurden, im Speicher nachverfolgt werden soll, anstatt in temporäre Festplattendateien geschrieben zu werden.

spark.hadoop.fs.s3a.committer.name

magicv2

Mit dieser Einstellung wird explizit der spezifische S3A Output Committer-Algorithmus ausgewählt, der verwendet werden soll (z. B. Verzeichnis, partitioniert oder Magic). Durch Angabe des Namens wählen Sie die Strategie aus, die temporäre Daten verwaltet, Aufgabenausfälle behandelt und den letzten atomaren Commit für den Amazon S3 S3-Zielpfad durchführt.

spark.hadoop.fs.s3.s3AccessGrants.enabled

FALSE

Property ermöglicht die Unterstützung von Amazon S3 Access Grants beim Zugriff auf Amazon S3 S3-Daten über den S3A/EMRFS-Dateisystemclient.

spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM

FALSE

Wenn Amazon S3 Access Grants aktiviert sind, steuert diese Eigenschaft, ob der Amazon S3 S3-Client auf herkömmliche IAM-Anmeldeinformationen zurückgreifen soll, wenn die Suche nach Access Grants fehlschlägt oder keine ausreichenden Berechtigungen bereitstellt.

spark.pyspark.driver.python

/usr/bin/python3.11

Python-Pfad für den Treiber.

spark.pyspark.python

/usr/bin/python3.11

Python-Pfad für den Executor.

spark.python.use.daemon

TRUE

Diese Konfiguration steuert, ob Spark auf jedem Executor einen Python-Worker-Daemon-Prozess verwendet. Wenn diese Option aktiviert ist (true, Standard), hält der Executor den Python-Worker zwischen den Aufgaben am Leben, um den Aufwand zu vermeiden, wiederholt einen neuen Python-Interpreter für jede Aufgabe zu starten und zu initialisieren, wodurch die Leistung von Anwendungen erheblich verbessert wird. PySpark

spark.sql.execution.arrow.pyspark.enabled

TRUE

Ermöglicht die Verwendung von Apache Arrow zur Optimierung der Datenübertragung zwischen den JVM- und Python-Prozessen in PySpark.

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

TRUE

Konfigurationseigenschaft, die das Verhalten von Spark steuert, wenn bei der Datenübertragung zwischen der JVM und Python mithilfe der Apache Arrow-Optimierung ein Fehler auftritt.

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

TRUE

Konfigurationseigenschaft, die steuert, ob Spark beim Schreiben von Parquet-Dateien in bestimmte Dateisysteme, insbesondere Cloud-Speichersysteme wie Amazon S3, einen optimierten Datei-Committer verwendet.

spark.sql.parquet.output.committer.class

com.amazon.emr.committer.EmrOptimizedSparkSqlParquetOutputCommitter

Spark-Konfigurationseigenschaft, die den vollqualifizierten Klassennamen des Hadoop OutputCommitter angibt, der beim Schreiben von Parquet-Dateien verwendet werden soll.

spark.resourceManager.cleanupExpiredHost

TRUE

Diese Eigenschaft steuert, ob der Treiber aktiv Spark-Anwendungsressourcen bereinigt, die mit Executoren verknüpft sind, die auf gelöschten oder abgelaufenen Knoten ausgeführt wurden.

spark.blacklist.decommissioning.enabled

TRUE

Diese Eigenschaft ermöglicht es der Logik von Spark, Executoren, die derzeit vom Clustermanager außer Betrieb genommen (Graceful Shutdown) werden, automatisch auf eine schwarze Liste zu setzen. Dadurch wird verhindert, dass der Scheduler neue Aufgaben an Executoren sendet, die im Begriff sind, das System zu beenden, wodurch die Stabilität des Jobs während der Ressourcenreduzierung verbessert wird.

spark.blacklist.decommissioning.timeout

1h

Maximale Zeit, während der Spark wartet, bis eine Aufgabe erfolgreich von einem außer Betrieb genommenen Executor migriert wurde, bevor der Host auf die schwarze Liste gesetzt wird.

spark.stage.attempt.ignoreOnDecommissionFetchFailure

TRUE

Weist Spark an, nachsichtig zu sein und nicht die gesamte Phase des Versuchs fehlzuschlagen, falls beim Lesen von Shuffle-Daten von einem Executor bei der Außerbetriebnahme ein Abruffehler auftritt. Der Fehlschlag beim Abrufen gilt als behebbar, und Spark ruft die Daten erneut von einem anderen Ort ab (was möglicherweise eine Neuberechnung erfordert). Dabei wird der Ausführung des Jobs Vorrang vor der strikten Fehlerbehandlung bei ordnungsgemäßem Herunterfahren eingeräumt.

spark.decommissioning.timeout.threshold

20

Diese Eigenschaft wird normalerweise intern oder in bestimmten Cluster-Manager-Setups verwendet, um die maximale Gesamtdauer zu definieren, die Spark für die Außerbetriebnahme eines Hosts erwartet. Wenn die tatsächliche Stilllegungszeit diesen Schwellenwert überschreitet, kann Spark aggressive Maßnahmen ergreifen, z. B. den Host auf eine schwarze Liste setzen oder eine erzwungene Kündigung beantragen, um die Ressource freizugeben.

spark.files.fetchFailure.unRegisterOutputOnHost

TRUE

Wenn eine Aufgabe keine Shuffle- oder RDD-Daten von einem bestimmten Host abrufen kann, weist die Einstellung auf true Spark an, die Registrierung aller mit der fehlgeschlagenen Anwendung verknüpften Ausgabeblöcke auf diesem Host aufzuheben. Dadurch wird verhindert, dass future Aufgaben versuchen, Daten vom unzuverlässigen Host abzurufen, wodurch Spark gezwungen ist, die erforderlichen Blöcke an anderer Stelle neu zu berechnen, was die Robustheit des Jobs gegenüber zeitweiligen Netzwerkproblemen erhöht.