

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
<a name="notebooks-spark-connect"></a>

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'`GetSessionEndpoint`API.

## Exemples d'API/CLI () GetSessionEndpoint
<a name="notebooks-spark-connect-api-examples"></a>

Vous pouvez utiliser l'`GetSessionEndpoint`API 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
<a name="notebooks-spark-connect-self-managed"></a>

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

### Conditions préalables
<a name="notebooks-spark-connect-prerequisites"></a>

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