Spark Connect-Unterstützung - 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.

Spark Connect-Unterstützung

Spark Connect ist eine Client-Server-Architektur für Apache Spark, die den Anwendungsclient vom Treiberprozess des Spark-Clusters entkoppelt und so eine Fernverbindung zu Spark von unterstützten Clients aus ermöglicht. Spark Connect ermöglicht auch interaktives Debuggen während der Entwicklung direkt von Ihren bevorzugten IDEs /clients aus.

Ab der Apache Spark-Release-Version 3.5 unterstützt Athena Spark Connect als AWS Endpunkt, auf den über die GetSessionEndpoint API zugegriffen werden kann.

API/CLI-Beispiele () GetSessionEndpoint

Sie können die GetSessionEndpoint API verwenden, um den Spark Connect-Endpunkt für eine interaktive Sitzung abzurufen.

aws athena get-session-endpoint \ --region "REGION" \ --session-id "SESSION_ID"

Diese API gibt die Spark Connect-Endpunkt-URL für diese Sitzung zurück.

{ "EndpointUrl": "ENDPOINT_URL", "AuthToken": "AUTH_TOKEN", "AuthTokenExpirationTime": "AUTH_TOKEN_EXPIRY_TIME" }

Verbindung von selbstverwalteten Clients aus herstellen

Sie können von selbstverwalteten Clients aus eine Verbindung zu einer interaktiven Athena Spark-Sitzung herstellen.

Voraussetzungen

Installieren Sie den pyspark-connect-Client für Spark 3.5.6 und das AWS SDK für Python.

pip install --user pyspark[connect]==3.5.6 pip install --user boto3

Im Folgenden finden Sie ein Python-Skript zum direkten Senden von Anfragen an den Sitzungsendpunkt:

import boto3 import time from pyspark.sql import SparkSession client = boto3.client('athena', region_name='<REGION>') # start the session response = client.start_session( WorkGroup='<WORKGROUP_NAME>', EngineConfiguration={} ) # wait for the session endpoint to be ready time.sleep(5) response = client.get_session_endpoint(SessionId=session_id) # construct the authenticated remote url authtoken=response['AuthToken'] endpoint_url=response['EndpointUrl'] endpoint_url=endpoint_url.replace("https", "sc")+":443/;use_ssl=true;" url_with_headers = ( f"{endpoint_url}" f"x-aws-proxy-auth={authtoken}" ) # start the Spark session start_time = time.time() spark = SparkSession.builder\ .remote(url_with_headers)\ .getOrCreate() spark.version # # Enter your spark code here # # stop the Spark session spark.stop()

Im Folgenden finden Sie ein Python-Skript für den Zugriff auf die Live-Benutzeroberfläche von Spark oder den Spark History Server für eine Sitzung:

Region='<REGION>' WorkGroupName='<WORKGROUP_NAME>' SessionId='<SESSION_ID>' Partition='aws' Account='<ACCOUNT_NUMBER>' SessionARN=f"arn:{Partition}:athena:{Region}:{Account}:workgroup/{WorkGroupName}/session/{SessionId}" # invoke the API to get the live UI/persistence UI for a session response = client.get_resource_dashboard( ResourceARN=SessionARN ) response['Url']