| 로컬 개발 환경 | 원격 클러스터 | ||
|---|---|---|---|
| VS Code, PyCharm, IntelliJ | → Spark 명령 → | 원격 클러스터 (또는 Serverless) | |
| ← 결과 반환 ← | 데이터 처리 실행 | # Databricks Connect — 로컬 IDE에서 원격 Spark 실행 |
개념
💡 Databricks Connect 는 로컬 개발 환경(VS Code, PyCharm 등)에서 작성한 코드를 원격 Databricks 클러스터에서 실행 할 수 있게 해주는 클라이언트 라이브러리입니다. 코드는 로컬에서 작성하지만, 실제 Spark 연산은 Databricks의 클러스터에서 처리됩니다.
왜 Databricks Connect가 필요한가요?
Databricks 노트북은 편리하지만, 전문 개발자에게는 익숙한 로컬 IDE의 기능(자동완성, 디버깅, 버전 관리 등)이 더 생산적입니다.| 개발 방식 | 장점 | 단점 |
|---|---|---|
| Databricks 노트북 | 즉시 사용 가능, 시각화 내장 | IDE 기능 제한, 대규모 프로젝트 관리 어려움 |
| 로컬 Spark (standalone) | 빠른 테스트 | 소규모만 가능, 프로덕션 환경과 차이 |
| Databricks Connect | IDE 자유도, 디버깅, 테스트 프레임워크 | 네트워크 지연, 일부 API 제한 |
| 로컬 개발 환경 | 통신 | Databricks 클러스터 |
|---|---|---|
| VS Code, PyCharm, IntelliJ | → Spark 명령 → | 원격 클러스터 (또는 Serverless) |
| 코드 작성, 디버깅, 단위 테스트 | ← 결과 반환 ← | 데이터 처리 실행, Unity Catalog 접근 |
설치 및 설정
요구 사항
| 항목 | 요건 |
|---|---|
| Python | 3.10 이상 |
| Databricks Runtime | 13.3 LTS 이상 |
| 네트워크 | 로컬 머신에서 Databricks 워크스페이스로의 HTTPS 접근 |
| 인증 | PAT, OAuth, 또는 Azure AD 토큰 |
설치
⚠️ 중요: databricks-connect의 버전은 반드시 클러스터의 Databricks Runtime 버전과 일치 해야 합니다. 버전이 맞지 않으면 호환성 오류가 발생합니다.
인증 설정
Databricks Connect는~/.databrickscfg 파일 또는 환경 변수를 통해 인증합니다.
방법 1: Databricks CLI 프로필 사용 (권장)
방법 2: Personal Access Token
방법 3: 환경 변수
지원 IDE
VS Code
VS Code는 Databricks Extension 과 함께 사용하면 가장 편리합니다.| VS Code 기능 | Databricks Connect 지원 |
|---|---|
| 코드 자동완성 | ✅ PySpark API 자동완성 |
| 디버깅 (Breakpoint) | ✅ 로컬 코드 디버깅 가능 |
| 변수 탐색기 | ✅ DataFrame 내용 확인 |
| 통합 터미널 | ✅ CLI 명령 실행 |
| Jupyter 노트북 | ✅ .ipynb 파일에서도 사용 가능 |
PyCharm / IntelliJ
로컬 코드에서 원격 실행
기본 사용법
DataFrame 작업
SQL 실행
단위 테스트 연동
Serverless 컴퓨트와의 연동
Databricks Connect는 Serverless Compute 에도 연결할 수 있습니다. 클러스터를 미리 시작할 필요 없이, 코드 실행 시 자동으로 서버리스 리소스가 할당됩니다.| 항목 | Classic Compute | Serverless Compute |
|---|---|---|
| 시작 시간 | 수 분 (클러스터 시작 대기) | 수 초 |
| 비용 모델 | 클러스터 가동 시간 기준 | 실행 시간 기준 |
| 설정 | cluster_id 필요 | serverless=True |
| 관리 | 클러스터 사양 직접 설정 | Databricks가 관리 |
| 적합한 경우 | 장시간 작업, 특수 설정 필요 | 간헐적 개발, 빠른 테스트 |
🆕 [2025 업데이트] Serverless Compute와의 연동이 GA되어, 클러스터를 관리할 필요 없이 즉시 개발을 시작할 수 있습니다.
제한사항
Databricks Connect는 모든 Spark API를 지원하지는 않습니다. 다음 제한사항을 확인하세요.| 카테고리 | 지원되지 않는 기능 |
|---|---|
| Streaming | foreachBatch의 일부 기능, 특정 소스/싱크 제한 |
| RDD API | RDD 기반 연산은 지원하지 않음 (DataFrame API 사용 권장) |
| SparkContext | sc.parallelize(), sc.textFile() 등 직접 사용 불가 |
| UDF | 복잡한 UDF에서 일부 제한 (로컬 라이브러리 참조 시) |
| Delta Lake | MERGE, DELETE, UPDATE 등은 SQL로 실행 가능 |
| MLlib | 분산 ML 학습은 제한적 (추론은 가능) |
제한 우회 방법
문제 해결
| 증상 | 원인 | 해결 방법 |
|---|---|---|
ConnectionError | 네트워크 차단 | VPN 연결 확인, 방화벽 규칙 확인 |
AuthenticationError | 토큰 만료 또는 잘못된 인증 | PAT 재발급 또는 OAuth 재인증 |
VersionMismatch | Connect 버전과 DBR 불일치 | pip install databricks-connect==<DBR버전>.* |
ClusterNotRunning | 클러스터가 종료된 상태 | 클러스터 시작 또는 Serverless 사용 |
Timeout | 대량 데이터를 로컬로 전송 시도 | .limit() 또는 .toPandas() 전에 필터링 |
정리
| 핵심 개념 | 요약 |
|---|---|
| Databricks Connect | 로컬 IDE에서 원격 Databricks 클러스터로 코드를 실행하는 클라이언트 라이브러리 |
| 설치 | pip install databricks-connect==<버전>.* (DBR 버전과 일치 필수) |
| 인증 | OAuth 프로필(권장), PAT, 환경 변수 |
| Serverless | 클러스터 없이 즉시 실행 가능 |
| 제한사항 | RDD API, SparkContext 직접 사용 불가. DataFrame API와 SQL 사용 권장 |