

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Dukungan Spark Connect
<a name="notebooks-spark-connect"></a>

Spark Connect adalah arsitektur client-server untuk Apache Spark yang memisahkan klien aplikasi dari proses driver cluster Spark, memungkinkan konektivitas jarak jauh ke Spark dari klien yang didukung. Spark Connect juga memungkinkan debugging interaktif selama pengembangan langsung dari /clients. favorit Anda. IDEs

Dari versi rilis Apache Spark versi 3.5 dan seterusnya, Athena mendukung Spark Connect sebagai titik akhir yang dapat diakses AWS menggunakan API. `GetSessionEndpoint`

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

Anda dapat menggunakan `GetSessionEndpoint` API untuk mendapatkan titik akhir Spark Connect untuk sesi interaktif.

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

API ini mengembalikan URL endpoint Spark Connect untuk sesi tersebut.

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

## Menghubungkan dari klien yang dikelola sendiri
<a name="notebooks-spark-connect-self-managed"></a>

Anda dapat terhubung ke Sesi Interaktif Athena Spark dari klien yang dikelola sendiri.

### Prasyarat
<a name="notebooks-spark-connect-prerequisites"></a>

Instal klien pyspark-connect untuk Spark 3.5.6 dan SDK untuk Python. AWS 

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

Berikut ini adalah contoh script Python untuk mengirim permintaan langsung ke endpoint sesi:

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

Berikut ini adalah contoh skrip Python untuk mengakses Live Spark UI atau Spark History Server untuk sesi:

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