다음을 통해 공유


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에 대한 컴퓨팅 구성을 참조 하세요.

  1. 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 명령을 실행합니다. 오류가 없으면 성공적으로 연결되었습니다.

  2. 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 작업 영역의 클러스터에서 실행되고 실행 응답은 로컬 호출자에게 다시 전송됩니다.

  3. 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 출력됩니다.