Python용 Databricks Connect의 고급 사용
참고 항목
이 문서에서는 Databricks Runtime 14.0 이상용 Databricks Connect에 대해 설명합니다.
이 문서에서는 Databricks Connect의 기본 설정을 넘어서는 항목에 대해 설명합니다.
Spark Connect 연결 문자열 구성
클러스터에 대한 연결 구성에 설명된 옵션을 사용하여 클러스터에 연결하는 것 외에도 고급 옵션은 Spark Connect 연결 문자열 사용하여 연결하는 것입니다. 함수에서 문자열을 remote
전달하거나 환경 변수를 SPARK_REMOTE
설정할 수 있습니다.
참고 항목
Databricks 개인용 액세스 토큰 인증만 사용하여 Spark Connect 연결 문자열 사용하여 연결할 수 있습니다.
함수를 사용하여 연결 문자열 설정하려면 다음을 수행합니다remote
.
# Set the Spark Connect connection string in DatabricksSession.builder.remote.
from databricks.connect import DatabricksSession
workspace_instance_name = retrieve_workspace_instance_name()
token = retrieve_token()
cluster_id = retrieve_cluster_id()
spark = DatabricksSession.builder.remote(
f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()
또는 환경 변수를 설정합니다.SPARK_REMOTE
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
그런 다음, 다음과 같이 클래스를 DatabricksSession
초기화합니다.
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Pyspark 셸
Python용 Databricks Connect는 Databricks Connect를 pyspark
사용하도록 구성된 PySpark REPL(Spark 셸)인 이진 파일과 함께 제공됩니다.
추가 매개 변수 없이 시작하면 셸은 환경(예 DATABRICKS_
: 환경 변수 또는 DEFAULT
구성 프로필)에서 기본 자격 증명을 선택하여 Azure Databricks 클러스터에 연결합니다. 연결 구성에 대한 자세한 내용은 Databricks Connect에 대한 컴퓨팅 구성을 참조 하세요.
Spark 셸을 시작하고 실행 중인 클러스터에 연결하려면 활성화된 Python 가상 환경에서 다음 명령 중 하나를 실행합니다.
pyspark
예를 들어 Spark 셸이 나타납니다.
Python 3.10 ... [Clang ...] on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.x.dev0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
셸이
spark
시작되면 Databricks 클러스터에서 Apache Spark 명령을 실행할 수 있습니다. 와 같은spark.range(1,10).show()
간단한 PySpark 명령을 실행합니다. 오류가 없으면 성공적으로 연결되었습니다.Python에서 Spark 셸을 사용하여 컴퓨팅에서 명령을 실행하는 방법에 대한 자세한 내용은 Spark 셸 을 사용한 대화형 분석을 참조하세요.
기본 제공
spark
변수를 사용하여 실행 중인 클러스터를SparkSession
나타냅니다. 예를 들면 다음과 같습니다.>>> df = spark.read.table("samples.nyctaxi.trips") >>> df.show(5) +--------------------+---------------------+-------------+-----------+----------+-----------+ |tpep_pickup_datetime|tpep_dropoff_datetime|trip_distance|fare_amount|pickup_zip|dropoff_zip| +--------------------+---------------------+-------------+-----------+----------+-----------+ | 2016-02-14 16:52:13| 2016-02-14 17:16:04| 4.94| 19.0| 10282| 10171| | 2016-02-04 18:44:19| 2016-02-04 18:46:00| 0.28| 3.5| 10110| 10110| | 2016-02-17 17:13:57| 2016-02-17 17:17:55| 0.7| 5.0| 10103| 10023| | 2016-02-18 10:36:07| 2016-02-18 10:41:45| 0.8| 6.0| 10022| 10017| | 2016-02-22 14:14:41| 2016-02-22 14:31:52| 4.51| 17.0| 10110| 10282| +--------------------+---------------------+-------------+-----------+----------+-----------+ only showing top 5 rows
모든 Python 코드는 로컬로 실행되지만 DataFrame 작업과 관련된 모든 PySpark 코드는 원격 Azure Databricks 작업 영역의 클러스터에서 실행되고 실행 응답은 로컬 호출자에게 다시 전송됩니다.
Spark 셸을 중지하려면 명령을 누르
Ctrl + d
거나Ctrl + z
실행하거나 명령을quit()
실행합니다exit()
.
추가 HTTP 헤더
Databricks Connect는 HTTP/2를 통해 gRPC를 통해 Databricks 클러스터와 통신합니다.
일부 고급 사용자는 클라이언트에서 들어오는 요청을 더 잘 제어하기 위해 클라이언트와 Azure Databricks 클러스터 간에 프록시 서비스를 설치하도록 선택할 수 있습니다.
프록시는 경우에 따라 HTTP 요청에 사용자 지정 헤더가 필요할 수 있습니다.
이 메서드를 headers()
사용하여 HTTP 요청에 사용자 지정 헤더를 추가할 수 있습니다.
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
인증서
클러스터가 사용자 지정 SSL/TLS 인증서를 사용하여 Azure Databricks 작업 영역 FQDN(정규화된 도메인 이름)을 확인하는 경우 로컬 개발 머신에서 환경 변수 GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
를 설정해야 합니다. 이 환경 변수는 클러스터에 설치된 인증서의 전체 경로로 설정해야 합니다.
예를 들어 다음과 같이 Python 코드에서 이 환경 변수를 설정합니다.
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
환경 변수를 설정하는 다른 방법은 운영 체제 설명서를 참조하세요.
로깅 및 디버그 로그
Python용 Databricks Connect는 표준 Python 로깅을 사용하여 로그를 생성합니다.
로그는 표준 오류 스트림(stderr)으로 내보내지고 기본적으로 WARN 수준의 로그만 내보내집니다.
환경 변수 SPARK_CONNECT_LOG_LEVEL=debug
를 설정하면 이 기본값이 수정되고 모든 로그 메시지가 수준 이상에서 DEBUG
출력됩니다.