Python용 Databricks Connect 문제 해결

메모

이 문서에서는 Databricks Runtime 13.3 LTS 이상에 대한 Databricks Connect에 대해 설명합니다.

이 문서에서는 Python Databricks Connect에 대한 문제 해결 정보를 제공합니다. Databricks Connect를 사용하면 인기 있는 IDE, Notebook 서버 및 사용자 지정 애플리케이션을 Azure Databricks 클러스터에 연결할 수 있습니다. Databricks Connect를 참조하세요. 이 문서의 Scala 버전은 Scala용 Databricks Connect 문제 해결을 참조하세요.

오류: StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS 확인 실패 또는 상태 500의 수신된 http2 헤더

문제: Databricks Connect를 사용하여 코드를 실행하려고 하면 StatusCode.UNAVAILABLE, StatusCode.UNKNOWN, DNS resolution failed또는 Received http2 header with status: 500같은 문자열이 포함된 오류 메시지가 표시됩니다.

가능한 원인: Databricks Connect가 클러스터에 연결할 수 없습니다.

권장 솔루션:

  • 작업 영역 인스턴스 이름이 올바른지 확인합니다. 환경 변수를 사용하는 경우 로컬 개발 머신에서 관련 환경 변수를 사용할 수 있고 올바른지 확인합니다.
  • 클러스터 ID가 올바른지 확인합니다. 환경 변수를 사용하는 경우 로컬 개발 머신에서 관련 환경 변수를 사용할 수 있고 올바른지 확인합니다.
  • 클러스터에 Databricks Connect와 호환되는 올바른 사용자 지정 클러스터 버전이 있는지 확인합니다.

Python 버전 불일치

로컬에서 사용 중인 Python 버전이 클러스터의 버전과 최소한 동일한 부 릴리스를 가지고 있는지 확인합니다(예: 3.10.113.10.10 ok, 3.103.9 아님). 지원되는 버전은 버전 지원 매트릭스참조하세요.

로컬에 여러 Python 버전을 설치한 경우 PYSPARK_PYTHON 환경 변수(예: PYSPARK_PYTHON=python3)를 설정하여 Databricks Connect가 올바른 버전을 사용하고 있는지 확인합니다.

PySpark 설치 충돌

databricks-connect 패키지가 PySpark와 충돌합니다. 둘 다 설치하면 Python Spark 컨텍스트를 초기화할 때 오류가 발생합니다. 이는 "스트림이 손상됨" 또는 "클래스를 찾을 수 없음" 오류를 포함하여 여러 가지 방법으로 매니페스트할 수 있습니다. Python 환경에 pyspark 설치한 경우 databricks-connect 설치하기 전에 제거되었는지 확인합니다. PySpark를 제거한 후 Databricks Connect 패키지를 완전히 다시 설치해야 합니다.

pip3 uninstall pyspark
pip3 uninstall databricks-connect
pip3 install --upgrade "databricks-connect==14.0.*"  # or X.Y.* to match your specific cluster version.

Databricks Connect 및 PySpark는 상호 배타적이지만 Python 가상 환경을 사용하여 IDE에서 databricks-connect 원격 개발을 수행하고 터미널에서 pyspark 로컬 테스트를 수행할 수 있습니다. 그러나 Databricks는 다음과 같은 이유로 모든 테스트에 서버리스 컴퓨팅을 사용하는 Python용 Databricks Connect를 사용할 것을 권장합니다.

  • Databricks 런타임은 따라서 databricks-connect, OSS pyspark에는 없는 기능들을 포함하고 있습니다.
  • databricks-connect 서버리스로 테스트하는 것은 로컬에서 pyspark 사용하여 테스트하는 것보다 빠릅니다.
  • Unity 카탈로그 통합은 pyspark사용할 수 없으므로 로컬에서 pyspark 사용하여 테스트할 때 권한이 적용되지 않습니다.
  • Databricks 컴퓨팅과 같은 외부 종속성을 사용하여 엔드 투 엔드를 테스트하는 경우 단위 테스트가 아닌 통합 테스트가 가장 좋습니다.

로컬 Spark 클러스터에 계속 연결하도록 선택하는 경우 다음을 사용하여 connection string 지정할 수 있습니다.

connection_string = "sc://localhost"
DatabricksSession.builder.remote(connection_string).getOrCreate()

바이너리 파일에 대한 PATH 항목 충돌 또는 누락

PATH가 구성되어 있어 spark-shell과(와) 같은 명령이 Databricks Connect에서 제공된 바이너리 대신 이전에 설치된 다른 바이너리를 실행할 가능성이 있습니다. Databricks Connect 바이너리가 우선적으로 사용되는지 확인하거나 이전에 설치된 것을 제거해야 합니다.

같은 spark-shell명령을 실행할 수 없는 경우 PATH가 자동으로 설정되지 않아 PATH에 pip3 install 설치 bin 디어를 수동으로 추가해야 할 수도 있습니다. 설정되지 않은 경우에도 IDE와 함께 Databricks Connect를 사용할 수 있습니다.

파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다.

Windows Databricks Connect를 사용하는 경우 다음을 참조하세요.

The filename, directory name, or volume label syntax is incorrect.

Databricks Connect가 경로에 공백이 있는 디렉터리에 설치되었습니다. 이 문제는 공백 없이 디렉터리 경로에 설치하거나 짧은 이름 양식을 사용하여 경로를 구성하면 해결할 수 있습니다.