Dukungan Spark Connect - Amazon Athena

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

Dukungan Spark Connect

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

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

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

Prasyarat

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