Assistance avec Spark Connect - 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.

Assistance avec Spark Connect

Spark Connect est une architecture client-serveur pour Apache Spark qui dissocie le client d'application du processus pilote du cluster Spark, permettant ainsi la connectivité à distance à Spark depuis les clients pris en charge. Spark Connect permet également le débogage interactif pendant le développement, directement à partir de vos /clients préférés IDEs.

À partir de la version 3.5 d'Apache Spark, Athena prend en charge Spark Connect en AWS tant que point de terminaison accessible via l'GetSessionEndpointAPI.

Exemples d'API/CLI () GetSessionEndpoint

Vous pouvez utiliser l'GetSessionEndpointAPI pour obtenir le point de terminaison Spark Connect pour une session interactive.

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

Cette API renvoie l'URL du point de terminaison Spark Connect pour cette session.

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

Connexion à partir de clients autogérés

Vous pouvez vous connecter à une session interactive Athena Spark à partir de clients autogérés.

Conditions préalables

Installez le client pyspark-connect pour Spark 3.5.6 et le SDK AWS pour Python.

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

Voici un exemple de script Python permettant d'envoyer des demandes directement au point de terminaison de session :

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()

Voici un exemple de script Python permettant d'accéder à l'interface utilisateur live de Spark ou au serveur Spark History pour une session :

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']