Git 통합을 위한 Repos

참고

Databricks Repos의 임의 파일에 대 한 지원은 현재 공개 미리 보기로 제공 됩니다. 자세한 내용은 Azure Databricks 리포지토리의 비-노트북 파일 작업Python 및 R 모듈 가져오기를 참조 하세요.

데이터 과학 및 엔지니어링 코드 개발에 대 한 모범 사례를 지원 하기 위해 Databricks Repos는 Git 공급자와 리포지토리 수준의 통합을 제공 합니다. Azure Databricks 노트북에서 코드를 개발 하 고 원격 Git 리포지토리와 동기화 할 수 있습니다. Databricks Repos를 사용 하면 원격 리포지토리 복제, 분기 관리, 변경 내용 푸시 및 끌어오기, 커밋 시의 차이점 비교와 같은 Git 기능을 사용할 수 있습니다.

Databricks Repos는 CI/CD 파이프라인과 통합할 수 있는 API 도 제공 합니다. 예를 들어 항상 최신 코드 버전을 포함 하도록 Databricks 리포지토리를 프로그래밍 방식으로 업데이트할 수 있습니다.

Databricks Repos는 목록에서 Git 리포지토리에 대 한 액세스를 제어 하 고 소스 코드에서 일반 텍스트 암호를 검색할 수 있도록 허용 하는 등의 보안 기능을 제공 합니다.

감사 로깅을 사용 하는 경우 Databricks 리포지토리와 상호 작용할 때 감사 이벤트가 기록 됩니다. 예를 들어, Databricks 리포지토리를 생성, 업데이트 또는 삭제 하 고, 작업 영역과 연결 된 모든 Databricks 리포지토리를 나열 하 고, Databricks 리포지토리와 Git 원격 간의 변경 내용을 동기화 할 때 감사 이벤트가 기록 됩니다.

Databricks 리포지토리를 사용 하 여 코드를 개발 하는 모범 사례에 대 한 자세한 내용은 CI/CD 워크플로와 리포지토리 통합에 대 한 모범 사례를 참조 하세요.

요구 사항

Azure Databricks는 다음 Git 공급자를 지원 합니다.

  • GitHub
  • Bitbucket
  • GitLab
  • Azure DevOps

Azure Databricks에서 Git 서버에 액세스할 수 있어야 합니다. Azure Databricks은 VPN 뒤의 Git 서버와 같은 개인 Git 서버를 지원 하지 않습니다.

Databricks Repos의 임의 파일에 대 한 지원은 Databricks Runtime 8.4 이상에서 사용할 수 있습니다.

Azure Databricks와 Git 통합 구성

  1. User Settings IconAzure Databricks 작업 영역에서 설정 를 클릭 하 고 메뉴에서 사용자 설정 을 선택 합니다.

  2. 사용자 설정 페이지에서 Git 통합 탭으로 이동 합니다.

  3. GitHub, Bitbucket Cloud, gitlab또는 Azure DevOps와 통합 하는 방법에 대 한 지침을 따르세요.

    Azure DevOps 토큰 또는 앱 암호를 입력 하지 않은 경우 Git 통합은 기본적으로 Azure Active Directory 토큰을 사용 합니다. Azure DevOps 개인용 액세스 토큰을 입력 하면 Git 통합에서 대신이 토큰을 사용 합니다.

  4. 조직에서 GitHub에 SAML SSO를 사용 하도록 설정한 경우 SSO에 대 한 개인용 액세스 토큰을 인증 받았는지확인 합니다.

Databricks Repos에서 임의 파일 지원 사용

중요

이 기능은 공개 미리 보기 상태입니다.

원격 Git 리포지토리와 노트북을 동기화 하는 것 외에도 Repos 파일을 사용 하 여 파일 .py , .csv 또는 형식의 데이터 파일 .json 또는 .yaml 구성 파일과 같은 모든 형식의 파일을 동기화 할 수 있습니다. Databricks 리포지토리 내에서이 파일을 가져오고 읽을 수 있습니다. UI에서 일반 텍스트 파일을 보고 편집할 수도 있습니다.

이 기능에 대 한 지원을 사용 하도록 설정 하지 않은 경우에도 리포지토리에는 비-노트북 파일이 표시 되지만 작업을 수행할 수는 없습니다.

요구 사항

Databricks Repos에서 비-노트북 파일을 사용 하려면 8.4 이상 Databricks Runtime를 실행 해야 합니다.

Repos에서 파일 사용

관리자는 다음과 같이이 기능을 사용 하도록 설정할 수 있습니다.

  1. 관리 콘솔로 이동합니다.
  2. 작업 영역 설정 탭을 클릭 합니다.
  3. Repos 섹션에서 Repos 토글의 파일 을 클릭 합니다.
  4. 브라우저를 새로 고칩니다.

또한 Repos의 파일이 사용 하도록 설정 된 후 리포지토리에 처음 액세스할 때 Git 대화 상자를 열어야합니다. 리포지토리의 비-노트북 파일을 동기화 하기 위해 끌어오기 작업을 수행 해야 함을 나타내는 대화 상자가 나타납니다. 동의를 선택 하 고 파일을 동기화 합니다. 병합 충돌이 발생 하는 경우 충돌 하는 변경 내용을 취소 하거나 새 분기에 변경 내용을 푸시할 수 있는 옵션을 제공 하는 다른 대화 상자가 나타납니다.

원격 Git 리포지토리 복제

Azure Databricks에서 원격 Git 리포지토리를 복제 하 고 전자 필기장 또는 파일에 대 한 작업을 수행할 수 있습니다. 노트북을 만들고, 노트북 및 기타 파일을 편집 하 고, 원격 리포지토리와 동기화 할 수 있습니다. 개발 작업에 대 한 새 분기를 만들 수도 있습니다. 일부 작업의 경우에는 PR 만들기, 충돌 해결, 분기 병합 또는 삭제, 분기의 기준 주소 등 Git 공급자에서 작업 해야 합니다.

  1. Repos Icon세로 막대에서 Repos 를 클릭 합니다.

  2. 리포지토리 추가를 클릭 합니다.

    Add repo

  3. 리포지토리 추가 대화 상자에서 원격 Git 리포지토리 복제 를 클릭 하 고 리포지토리 URL을 입력 합니다. 드롭다운 메뉴에서 Git 공급자를 선택 하 고 필요에 따라 Databricks 리포지토리에 사용할 이름을 변경 하 고 만들기를 클릭 합니다. 원격 리포지토리의 콘텐츠가 Databricks 리포지토리로 복제 됩니다.

    Clone from repo

Azure Databricks 리포지토리의 노트북 작업

리포지토리에 새 노트북 또는 폴더를 만들려면 리포지토리 이름 옆에 있는 아래쪽 화살표를 클릭 하 고, 노트북 만들기 또는 메뉴에서 폴더 만들기 를 선택 합니다.

Repo create menu

작업 영역의 노트북 또는 폴더를 리포지토리로 이동 하려면 노트북 또는 폴더로 이동 하 고 드롭다운 메뉴에서 이동 을 선택 합니다.

Move object

대화 상자에서 개체를 이동 하려는 리포지토리를 선택 합니다.

Move repo

SQL 또는 Python 파일을 단일 셀 Azure Databricks 전자 필기장으로 가져올 수 있습니다.

  • -- Databricks notebook sourceSQL 파일의 맨 위에 주석 줄을 추가 합니다.
  • # Databricks notebook sourcePython 파일의 맨 위에 주석 줄을 추가 합니다.

Azure Databricks 리포지토리의 비-노트북 파일 작업

이 섹션에서는 리포지토리에 파일을 추가 하 고 파일을 보고 편집 하는 방법에 대해 설명 합니다.

중요

이 기능은 공개 미리 보기 상태입니다.

요구 사항

8.4 이상 Databricks Runtime 합니다.

새 파일 만들기

리포지토리에서 파일을 만드는 가장 일반적인 방법은 Git 리포지토리를 복제하는 것입니다. Databricks 리포지토리에서 직접 새 파일을 만들 수도 있습니다. 리포지토리 이름 옆에 있는 아래쪽 화살표를 클릭 하 고 메뉴 에서 파일 만들기 를 선택 합니다.

repos create file

파일 업로드

로컬 시스템에서 파일을 업로드 하려면 리포지토리 이름 옆에 있는 아래쪽 화살표를 클릭 하 고 업로드 파일을 선택 합니다. 파일을 대화 상자로 끌거나 찾아보기 를 클릭 하 여 파일을 선택할 수 있습니다.

repos upload file

파일 편집

리포지토리의 파일을 편집 하려면 Repos 브라우저에서 파일 이름을 클릭 합니다. 파일이 열리고 편집할 수 있습니다. 변경 내용은 자동으로 저장 됩니다.

코드 리팩터링

코드 개발의 모범 사례는 코드를 쉽게 다시 사용할 수 있도록 코드를 모듈화 하는 것입니다. 리포지토리에 사용자 지정 Python 파일을 만들고 문을 사용 하 여 해당 파일의 코드를 노트북에서 사용할 수 있도록 설정할 수 있습니다 import . 예제를 보려면 예제 노트북을 참조 하십시오.

노트북 코드를 다시 사용할 수 있는 파일로 리팩터링 하려면:

  1. Repos UI에서 새 분기를 만듭니다.
  2. 코드에 대 한 새 소스 코드 파일을 만듭니다 .
  3. 새 파일의 코드를 노트북에서 사용할 수 있도록 하려면 전자 필기장에 Python import 문을 추가 합니다.
  4. Git 공급자에 변경 내용을 커밋하고 푸시합니다.

리포지토리의 파일에 프로그래밍 방식으로 액세스

또는 파일과 같은 리포지토리의 작은 데이터 파일은 .csv 노트북에서 직접 읽을 수 있습니다 .json . 전자 필기장에서 프로그래밍 방식으로 파일을 만들거나 편집할 수 없습니다.

import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df

Spark를 사용 하 여 리포지토리의 파일에 액세스할 수 있습니다. Spark에는 파일 데이터에 대 한 절대 파일 경로가 필요 합니다. 리포지토리의 파일에 대 한 절대 파일 경로는 file:/Workspace/Repos/<user_folder>/<repo_name>/file 입니다.

파일 옆에 있는 드롭다운 메뉴에서 리포지토리의 파일에 대 한 절대 경로 또는 상대 경로를 복사할 수 있습니다.

file drop down menu

아래 예제에서는 를 사용하여 {os.getcwd()} 전체 경로를 얻는 방법을 보여줍니다.

import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")

예제 Notebook

이 Notebook에서는 리포지토리에서 임의 파일로 작업하는 예제를 보여 있습니다.

리포지토리 예제 Notebook의 임의 파일

Notebook 가져오기

Python 및 R 모듈 작업

중요

이 기능은 공개 미리 보기 상태입니다.

요구 사항

Databricks Runtime 8.4 이상

Python 및 R 모듈 가져오기

리포지토리 및 Notebook의 현재 작업 디렉터리는 Python 경로에 자동으로 추가됩니다. 리포지토리 루트에서 작업하는 경우 루트 디렉터리와 모든 하위 디렉터리에서 모듈을 가져올 수 있습니다.

다른 리포지션에서 모듈을 가져오려면 해당 리포지션을 에 추가해야 sys.path 합니다. 예를 들면 다음과 같습니다.

import sys
sys.path.append("/Workspace/Repos/<user-name>/<repo-name>")

# to use a relative path
import sys
import os
sys.path.append(os.path.abspath('..'))

클러스터 라이브러리 또는 Notebook 범위 라이브러리로 저장된 모듈에서와 마찬가지로 리포지션의 모듈에서 함수를 가져옵니다.

Python

from sample import power
power.powerOfTwo(3)

R

source("sample.R")
power.powerOfTwo(3)

Azure Databricks Python Notebook 가져오기

일반 Python 파일과 소스 코드 형식으로 내보낸 Azure Databricks Python 언어 Notebook을 구분하기 위해 Databricks는 Notebook 소스 코드 파일의 맨 위에 줄을 # Databricks Notebook source 추가합니다.

Notebook을 가져올 때 Azure Databricks 이를 인식하고 Python 모듈이 아닌 Notebook으로 가져옵니다.

Notebook을 Python 모듈로 가져오려면 코드 편집기에서 Notebook을 편집하고 줄을 제거해야 # Databricks Notebook source 합니다. 해당 줄을 제거하면 Notebook이 일반 Python 파일로 변환됩니다.

우선 순위 규칙 가져오기

import리포지션의 Notebook에서 문을 사용하는 경우 리포지션의 라이브러리가 클러스터에 설치된 동일한 이름의 라이브러리 또는 휠보다 우선합니다.

Python 모듈에 대한 자동 로드

Python 코드를 개발하는 동안 여러 파일을 편집하는 경우 모든 셀에서 다음 명령을 사용하여 모든 모듈을 강제로 다시 로드할 수 있습니다.

%load_ext autoreload
%autoreload 2

원격 Git 리포지토리와 동기화

Git과 동기화하려면 Git 대화 상자를 사용합니다. Git 대화 상자를 사용하면 원격 Git 리포지토리에서 변경 내용을 끌어오고 변경 내용을 푸시 및 커밋할 수 있습니다. 작업 중인 분기를 변경하거나 새 분기 를 만들수도 있습니다.

중요

Git 대화 상자 열기

Notebook 또는 리포지토리 브라우저에서 Git 대화 상자에 액세스할 수 있습니다.

  • Notebook에서 현재 Git 분기를 식별하는 Notebook의 왼쪽 위에 있는 단추를 클릭합니다.

    Git dialog button on notebook

  • 리포지토리 브라우저에서 리포지토리 이름 오른쪽에 있는 단추를 클릭합니다.

    Git dialog button in repo browser

    리포지엄 이름 옆에 있는 아래쪽 화살표를 클릭하고 메뉴에서 Git...을 선택할 수도 있습니다.

    Repos menu 2

원격 Git 리포지토리에서 변경 내용 끌어오기

원격 Git 리포지토리에서 변경 내용을 끌어오려면 Pull Git 대화 상자를 클릭합니다. Notebook 및 기타 파일은 원격 리포지토리의 최신 버전으로 자동으로 업데이트됩니다.

병합 충돌 해결에 대한 지침은 병합 충돌을 참조하세요.

병합 충돌

병합 충돌을 해결하려면 충돌하는 변경 내용을 취소하거나 변경 내용을 새 분기에 커밋한 다음 끌어오기 요청을 사용하여 원래 기능 분기에 병합해야 합니다.

  1. 병합 충돌이 있는 경우 Repos UI에 끌어오기를 취소하거나 충돌을 해결할 수 있는 알림이 표시됩니다. PR을 사용하여 충돌 해결을선택하면 새 분기를 만들고 변경 내용을 커밋할 수 있는 대화 상자가 나타납니다.

    resolve conflict dialog

  2. 새 분기에 커밋을클릭하면 병합 충돌을 해결하기 위한 끌어오기 요청 만들기링크가 표시됩니다. 링크를 클릭하여 Git 공급자를 엽니다.

    merge conflict create PR message

  3. Git 공급자에서 PR을 만들고, 충돌을 해결하고, 새 분기를 원래 분기에 병합합니다.

  4. Repos UI로 돌아갑니다. Git 대화 상자를 사용하여 Git 리포지토리에서 원래 분기로 변경 내용을 끌어올 수 있습니다.

원격 Git 리포지토리에 변경 내용 커밋 및 푸시

새 Notebook 또는 파일을 추가하거나 기존 Notebook 또는 파일을 변경한 경우 Git 대화 상자에 변경 내용이 강조 표시됩니다.

git dialog

필요한 변경 내용 요약을 추가하고 푸시 커밋을 클릭하여 이러한 변경 내용을 원격 Git 리포지토리로 푸시합니다.

와 같은 기본 분기에 커밋할 권한이 없는 경우 mainmain Git 공급자 인터페이스를 사용하여 PR(끌어오기 요청)을 만들어 기본 분기에 병합합니다.

참고

  • 결과는 Notebook 커밋에 포함되지 않습니다. 커밋이 이루어지기 전에 모든 결과가 지워집니다.
  • 병합 충돌 해결에 대한 지침은 병합 충돌을 참조하세요.

새 분기 만들기

Git 대화 상자에서 기존 분기를 기반으로 새 분기를 만들 수 있습니다.

Git dialog new branch

Databricks Repos 대한 액세스 제어

사용 권한 관리

리포지럴을 만들 때 관리할 수 있는 권한이 있습니다. 이렇게 하면 Git 작업을 수행하거나 원격 리포지토리를 수정할 수 있습니다. Git 자격 증명(개인용 액세스 토큰 및 사용자 이름) 없이 공용 원격 리포지토리를 복제할 수 있습니다. 공용 원격 리포지토리를 수정하거나 프라이빗 원격 리포지토리를 복제하거나 수정하려면 원격 리포지토리에 대한 읽기 및 쓰기 권한이 있는 Git 공급자 사용자 이름 및 개인용 액세스 토큰이 있어야 합니다.

허용 목록 사용

관리자는 사용자가 커밋하고 푸시할 수 있는 원격 리포지토리를 제한할 수 있습니다.

  1. 관리 콘솔로 이동합니다.
  2. 작업 영역 설정 탭을 클릭합니다.
  3. 고급 섹션에서 Repos Git URL 허용 목록 사용 토글을 클릭합니다.
  4. 확인을 클릭합니다.
  5. git URL 허용 목록: 빈 목록 Repos옆의 필드에 쉼표로 구분된 URL 접두사 목록을 입력합니다.
  6. 저장을 클릭합니다.

사용자는 지정한 URL 접두사 중 하나로 시작하는 Git 리포지토리에만 커밋하고 푸시할 수 있습니다. 기본 설정은 모든 리포지토리에 대한 액세스를 사용하지 않도록 설정하는 "빈 목록"입니다. 모든 리포지토리에 대한 액세스를 허용하려면 Repos Git URL 허용 목록 사용을사용하지 않도록 설정합니다.

참고

  • 저장한 목록은 저장된 기존 URL 접두사 집합을 덮어씁다.
  • 변경 내용을 적용하는 데 약 15분이 걸릴 수 있습니다.

비밀 검색

Repos 코드에서 접두사로 시작하는 액세스 키 ID를 AKIA 검사하고 커밋하기 전에 사용자에게 경고합니다.

Repos API

Repos API 업데이트 엔드포인트를 사용하면 리포지션을 특정 Git 분기의 최신 버전 또는 태그로 업데이트할 수 있습니다. 이렇게 하면 리포지점의 Notebook에 대해 작업을 실행하기 전에 리포지던트를 업데이트할 수 있습니다. 자세한 내용은 Repos API 2.0을 참조하세요.

Terraform 통합

Databricks Terraform 공급자 및 databricks_repo 사용하여 완전히 자동화된 설치에서 리포지토리를 관리할 수 있습니다.

resource "databricks_repo" "this" {
  url = "https://github.com/user/demo.git"
}

CI/CD 워크플로와 리포지토리를 통합하기 위한 모범 사례

이 섹션에는 DATAbricks 리포지토리를 CI/CD 워크플로와 통합하는 모범 사례가 포함되어 있습니다. 다음 그림에서는 단계의 개요를 보여 있습니다.

Best practices overview

관리 워크플로

Repos 사용자 수준 폴더와 비사용자 최상위 폴더가 있습니다. 사용자 수준 폴더는 사용자가 원격 리포지토리를 처음 복제할 때 자동으로 만들어집니다. 사용자 폴더의 리포지토리는 각 사용자에 대한 개별적이고 사용자가 코드를 변경하는 "로컬 체크 아웃"으로 생각할 수 있습니다.

최상위 리포지터리포 폴더 설정

관리자는 사용자가 아닌 최상위 폴더를 만들 수 있습니다. 이러한 최상위 폴더의 가장 일반적인 사용 사례는 개발, 스테이징 및 프로덕션에 적합한 버전 또는 분기의 리포지토리가 포함된 개발, 스테이징 및 프로덕션 폴더를 만드는 것입니다. 예를 들어 회사에서 프로덕션에 Main 분기를 사용하는 경우 Production 폴더에는 Main 분기에 있도록 구성된 리포지토리가 포함됩니다.

일반적으로 이러한 최상위 폴더에 대한 권한은 작업 영역 내의 모든 비관리자 사용자에 대해 읽기 전용입니다.

Top-level repo folders

병합 시 리포지토리를 업데이트하도록 Git 자동화 설정

리포지토리가 항상 최신 버전인지 확인하려면 Repos API를호출하도록 Git 자동화를 설정할 수 있습니다. Git 공급자에서 PR을 주 분기로 성공적으로 병합할 때마다 프로덕션 폴더의 적절한 리포지션에서 Repos API 엔드포인트를 호출하여 해당 리포지션을 최신 버전으로 가져오는 자동화를 설정합니다.

예를 들어 GitHub GitHub 작업을통해 수행할 수 있습니다. 자세한 내용은 Repos API를 참조하세요.

개발자 워크플로

Repos 사용자 폴더에서 원격 리포지토리를 복제합니다. 기본 분기에 변경 내용을 직접 커밋하고 푸시하는 대신 새 기능 분기를 만들거나이전에 만든 분기를 작업에 선택하는 것이 가장 좋습니다. 해당 분기에서 변경, 커밋 및 푸시 변경 내용을 만들 수 있습니다. 코드를 병합할 준비가 되면 끌어오기 요청을 만들고 Git에서 검토 및 병합 프로세스를 수행합니다.

예제 워크플로는 다음과 같습니다.

요구 사항

이 워크플로를 사용하려면 Git 통합 을 이미 구성해야 합니다.

참고

Databricks는 각 개발자가 자체 기능 분기에서 작업할 것을 권장합니다. 개발자 간에 기능 분기를 공유하면 병합 충돌이 발생할 수 있으며 Git 공급자를 사용하여 해결해야 합니다. 병합 충돌을 해결하는 방법에 대한 자세한 내용은 병합 충돌을 참조하세요.

워크플로

  1. 기존 Git 리포지토리를 Databricks 작업 영역에 복제합니다.
  2. Repos UI를 사용하여 주 분기에서 기능 분기를 만듭니다. 이 예제에서는 간단히 하기 위해 단일 기능 분기 feature-b를 사용합니다. 여러 기능 분기를 만들고 사용하여 작업을 수행할 수 있습니다.
  3. 리포지션에서 Databricks Notebook 및 파일을 수정합니다.
  4. 변경 내용을 커밋하고 Git 공급자 에 푸시합니다.
  5. 이제 동료가 Git 리포지토리를 자신의 사용자 폴더에 복제할 수 있습니다.
    1. 새 분기에서 작업하는 동료는 리포지터의 Notebook 및 파일을 변경합니다.
    2. 동료가 변경 내용을 커밋하고 Git 공급자 에 푸시합니다.
  6. 다른 분기의 변경 내용을 병합하거나 기능 분기를 다시 사용하려면 로컬 시스템에서 Git 명령줄 또는 IDE를 사용해야 합니다. 그런 다음, Repos UI에서 Git 대화 상자를 사용하여 변경 내용을 Databricks 리포지션의 feature-b 분기로 끌어올 수 있습니다.
  7. 작업을 기본 분기에 병합할 준비가 되면 Git 공급자를 사용하여 PR을 만들어 feature-b의 변경 내용을 병합합니다.
  8. Repos UI에서 변경 내용을 주 분기로 끌어오기합니다.

프로덕션 작업 워크플로

리포지토리의 Notebook에 직접 작업을 가리킬 수 있습니다. 작업이 실행을 시작하면 리포지션에 있는 코드의 현재 버전을 사용합니다.

관리 워크플로에 설명된 대로 자동화가 설정되면 모든 성공적인 병합은 Repos API를 호출하여 리포지션을 업데이트합니다. 따라서 리포지점에서 코드를 실행하도록 구성된 작업은 항상 작업 실행을 만들 때 사용할 수 있는 최신 버전을 사용합니다.

마이그레이션 팁

중요

이 기능은 공개 미리 보기 상태입니다.

명령을 사용하여 %run Notebook에 정의된 Python 또는 R 함수를 다른 Notebook에서 사용할 수 있도록 하거나 클러스터에 사용자 지정 파일을 설치하는 경우 .whl Databricks 리포지션에 이러한 사용자 지정 모듈을 포함하는 것이 좋습니다. 이러한 방식으로 Notebook 및 기타 코드 모듈을 동기화된 상태로 유지하여 Notebook에서 항상 올바른 버전을 사용할 수 있습니다.

%run명령에서 마이그레이션

%run 명령을 사용하면 하나의 Notebook을 다른 Notebook 내에 포함할 수 있으며, 지원 Python 또는 R 코드를 Notebook에서 사용할 수 있도록 하는 데 자주 사용됩니다. 이 예제에서 라는 power.py Notebook에는 아래 코드가 포함됩니다.

# This code is in a notebook named "power.py".
def n_to_mth(n,m):
  print(n, "to the", m, "th power is", n**m)

그런 다음 명령을 사용하여 에 정의된 함수를 다른 Notebook에서 사용할 수 있도록 만들 수 power.py 있습니다. %run

# This notebook uses a %run command to access the code in "power.py".
%run ./power
n_to_mth(3, 4)

Repos 파일을 사용하여 Python 코드가 포함된 모듈을 직접 가져오고 함수를 실행할 수 있습니다.

from power import n_to_mth
n_to_mth(3, 4)

사용자 지정 Python 파일 설치에서 마이그레이션 .whl

클러스터에 사용자 지정 .whl 파일을 설치한 다음 해당 클러스터에 연결된 Notebook으로 가져올 수 있습니다. 자주 업데이트되는 코드의 경우 이 프로세스는 번거롭고 오류가 발생하기 쉽습니다. Repos 파일을 사용하면 코드를 사용하는 Notebook과 동일한 리포지션에 이러한 Python 파일을 보관하여 Notebook에서 항상 올바른 버전을 사용하도록 할 수 있습니다.

Python 프로젝트 패키징에 대한 자세한 내용은 이 자습서를 참조하세요.

제한 사항 및 FAQ

이 섹션에서는 다음 작업을 수행합니다.

들어오는 변경 내용으로 Notebook 상태가 지워지게 됩니다.

Notebook 소스 코드를 변경하는 Git 작업을 수행하면 셀 결과, 주석, 수정 기록 및 위젯을 비롯한 Notebook 상태가 손실됩니다. 예를 들어 Git 끌어오기는 Notebook의 소스 코드를 변경할 수 있습니다. 이 경우 Databricks 리포지토리는 기존 Notebook을 덮어쓰고 변경 내용을 가져와야 합니다. Git 커밋 및 푸시 또는 새 분기 만들기는 Notebook 소스 코드에 영향을 미치지 않으므로 이러한 작업에서 Notebook 상태가 유지됩니다.

MLflow 실험의 손실 가능성

다음 워크플로를 수행하면 MLflow 실험이 영구적으로 삭제됩니다.

  1. 분기 A의 Notebook에서 MLflow 실험을 실행합니다. 실험이 MLflow에 기록됩니다.
  2. Notebook이 없는 분기 B로 전환합니다. Notebook이 삭제되었다는 대화 상자가 나타납니다.
  3. 분기 A로 다시 전환하면 Notebook은 여전히 존재하지만 실험은 더 이상 존재하지 않습니다.

Git 작업이 진행 중인 동안 Notebook에서 작업이 실행되면 어떻게 되나요?

Git 작업이 진행되는 동안 언제든지 리포지점의 일부 Notebook이 업데이트되었지만 다른 Notebook은 업데이트되지 않았을 수 있습니다. 이로 인해 예기치 않은 동작이 발생할 수 있습니다.

예를 들어 Notebook A가 명령을 사용하여 Notebook Z를 호출한다고 %run 가정합니다. Git 작업 중에 실행 중인 작업이 최신 버전의 Notebook A를 시작하지만 Notebook Z가 아직 업데이트되지 않은 경우 %run Notebook A의 명령은 이전 버전의 Notebook Z를 시작할 수 있습니다. Git 작업 중에는 Notebook 상태를 예측할 수 없으며 작업이 실패하거나 다른 커밋에서 Notebook A 및 Notebook Z를 실행할 수 있습니다.

리포지블리에서 Databricks가 아닌 Notebook 파일을 실행하기 위해 어떻게 해야 합니까? 예를 들어 .py 파일인가요?

다음 중 하나를 사용할 수 있습니다.

사용자 폴더가 아닌 최상위 폴더를 만들 수 있나요?

예, 관리자는 최상위 폴더를 단일 수준으로 만들 수 있습니다. Repos는 추가 폴더 수준을 지원 하지 않습니다.

커밋에 대 한 GPG 서명을 지원할 Repos 있나요?

아니요.

Azure Databricks에 저장 된 Github 토큰은 어디에 있나요? Who Azure Databricks에서 액세스할 수 있습니까?

  • 인증 토큰은 Azure Databricks 제어 평면에 저장 되며, Azure Databricks 직원은 감사 되는 임시 자격 증명을 통해서만 액세스할 수 있습니다.
  • Azure Databricks은 이러한 토큰의 생성 및 삭제를 기록 하 고 사용 하지는 않습니다. Azure Databricks에는 Azure Databricks 응용 프로그램에서 토큰 사용을 감사 하는 데 사용할 수 있는 Git 작업을 추적 하는 로깅이 있습니다.
  • Github enterprise 감사 토큰 사용. 다른 Git 서비스에는 Git 서버 감사도 있을 수 있습니다.

온-프레미스 또는 자체 호스팅 Git 서버를 지원 Repos?

아니요.

Git 하위 모듈 지원 Repos?

아니요. Git 하위 모듈를 포함 하는 리포지토리는 복제할 수 있지만 하위 모듈은 복제 되지 않습니다.

SSH를 지원 Repos?

아니요, HTTPS만 해당 합니다.

지원 파일이 Repos .gitignore ?

예. 리포지토리에 파일을 추가 하 고 Git에서 추적 하지 않으려는 경우, 파일을 만들거나 .gitignore 원격 리포지토리에서 복제 된 파일을 사용 하거나 확장명을 포함 한 파일 이름을 추가 합니다.

.gitignore Git에서 아직 추적 하지 않은 파일에 대해서만 작동 합니다. 이미 Git에서 추적 한 파일을 파일에 추가 하는 경우 .gitignore 파일은 git에서 계속 추적 됩니다.

외부 오케스트레이션 도구를 사용 하지 않고 작업을 실행 하기 전에 Git에서 최신 버전의 리포지토리를 끌어올 수 있나요?

아니요. 일반적으로이를 Git 서버에서 사전 커밋으로 통합 하 여 분기 (주/prod)로의 모든 푸시에서 프로덕션 리포지토리를 업데이트할 수 있습니다.

파일을 가져올 수 .ipynb 있나요?

예. 파일은 .json 전자 필기장 형식이 아닌 형식으로 렌더링 됩니다.

라이브러리를 클러스터에 설치 하 고 동일한 이름의 라이브러리를 리포지토리 내의 폴더에 포함 하는 경우 라이브러리를 가져올 수 있나요?

리포지토리의 라이브러리를 가져옵니다.

리포지토리의 크기나 파일 수에 제한이 있나요?

Databricks는 리포지토리의 크기에 제한을 적용 하지 않습니다. 작업 분기는 200 MB로 제한 됩니다. 개별 파일은 100 MB로 제한 됩니다.

Databricks는 리포지토리의 총 전자 필기장과 파일 수가 2000을 초과 하지 않도록 권장 합니다.

이러한 제한을 초과 하면 오류 메시지가 표시 될 수 있습니다. 리포지토리의 초기 클론에 시간 초과 오류가 나타날 수도 있지만 백그라운드에서 작업이 완료 될 수 있습니다.

분기 병합을 지원할 Repos 있나요?

아니요. Databricks 끌어오기 요청을 만들고 Git 공급자를 통해 병합 하는 것이 좋습니다.

Databricks 리포지토리의 내용이 암호화 되어 있나요?

리포지토리의 내용은 기본 키를 사용 하 여 Azure Databricks에 의해 암호화 됩니다. 관리 서비스에 대해 고객 관리형 키 사용을 사용하는 암호화는 지원되지 않습니다.

Azure Databricks 리포지토리에서 분기를 삭제할 수 있나요?

아니요. 분기를 삭제 하려면 Git 공급자에서 작업 해야 합니다.

Databricks 리포지토리 콘텐츠는 어디에 저장 되나요?

리포지토리의 콘텐츠는 제어 평면의 디스크로 일시적으로 복제 됩니다. Azure Databricks 노트북 파일은 주 작업 영역의 전자 필기장과 마찬가지로 제어 평면 데이터베이스에 저장 됩니다. 비-노트북 파일은 최대 30 일간 디스크에 저장 될 수 있습니다.

내 작업 영역에서 Repos를 사용 하지 않도록 설정 하려면 어떻게 해야 하나요?

작업 영역에서 Git에 Repos을 사용 하지 않도록 설정 하려면 다음 단계를 수행 합니다.

  1. 관리 콘솔로 이동합니다.
  2. 작업 영역 설정 탭을 클릭 합니다.
  3. 고급 섹션에서 Repos 설정/해제를 클릭 합니다.
  4. 확인을 클릭합니다.
  5. 브라우저를 새로 고칩니다.

Azure Data Factory (ADF) Repos 지원 하나요?

예.

Repos 제한의 파일

중요

이 기능은 공개 미리 보기 상태입니다.

  • 10.1 이하의 Databricks Runtime Repos의 파일은 Spark 스트림과 호환 되지 않습니다. 10.1 이하의 Databricks Runtime를 실행 하는 클러스터에서 Spark 스트리밍을 사용 하려면 클러스터에서 Repos 파일을 사용 하지 않도록 설정 해야 합니다. Spark 구성을설정 합니다.
  • 네이티브 파일 읽기는 Python 및 R 노트북에서 지원 됩니다. 네이티브 파일 읽기는 Scala 노트북에서 지원 되지 않지만 현재와 마찬가지로 DBFS와 Scala 노트북을 사용할 수 있습니다.
  • Git 대화 상자의 diff 뷰는 파일에 사용할 수 없습니다.
  • 텍스트 인코딩 파일만 UI에서 렌더링 됩니다. Azure Databricks 파일을 보려면 파일이 10mb 보다 크지 않아야 합니다.
  • 노트북에서 파일을 만들거나 편집할 수 없습니다.
  • 노트북만 내보낼 수 있습니다. 리포지토리의 비-노트북 파일은 내보낼 수 없습니다.

문제 해결

오류 메시지: Invalid credentials

다음을 시도해 보세요.

  • git 통합 탭 (사용자 설정 git 통합)의 설정이 올바른지 확인 합니다.

    • Git 공급자 사용자 이름과 토큰을 모두 입력 해야 합니다. 레거시 Git 통합에는 사용자 이름이 필요 하지 않으므로 리포지토리를 사용 하려면 사용자 이름을 추가 해야 할 수 있습니다.
  • 리포지토리 추가대화 상자에서 올바른 Git 공급자를 선택 했는지 확인 합니다.

  • 개인용 액세스 토큰 또는 앱 암호에 올바른 리포지토리 액세스 권한이 있는지 확인 합니다.

  • Git 공급자에서 SSO를 사용 하는 경우 SSO에 대 한 토큰에 권한을 부여 합니다.

  • Git 명령줄을 사용 하 여 토큰을 테스트 합니다. 이러한 두 옵션은 모두 작동 해야 합니다.

    git clone https://<username>:<personal-access-token>@github.com/<org>/<repo-name>.git
    
    git clone -c http.sslVerify=false -c http.extraHeader='Authorization: Bearer <personal-access-token>' https://agile.act.org/
    

오류 메시지: SSL 문제로 인해 보안 연결을 설정할 수 없습니다.

<link>: Secure connection to <link> could not be established because of SSL problems

이 오류는 Azure Databricks에서 Git 서버에 액세스할 수 없는 경우에 발생 합니다. 전용 Git 서버는 지원 되지 않습니다.

오류 메시지: 자격 증명 Azure Active Directory

  Encountered an error with your Azure Active Directory credentials. Please try logging out of Azure Active Directory and logging back in.

이 오류는 팀이 최근 MFA (multi-factor authorization) 정책을 사용 하 여 Azure Active Directory에 대해를 이동한 경우에 발생할 수 있습니다. 이 문제를 해결 하려면로 이동 하 고 로그 아웃 하 여 Azure Active Directory에서 로그 아웃 해야 합니다 portal.azure.com . 다시 로그인 하면 MFA를 사용 하 여 로그인 하 라는 메시지가 표시 됩니다.

작동 하지 않는 경우 다시 로그인을 시도 하기 전에 모든 Azure 서비스에서 완전히 로그 아웃 합니다.

시간 제한 오류

큰 리포지토리를 복제 하거나 큰 분기를 체크 아웃 하는 것과 같은 비용이 많이 드는 작업은 시간 초과 오류가 발생할 수 있지만 백그라운드에서 작업이 완료 될 수 있습니다. 작업 영역의 부하가 높을 때 나중에 다시 시도할 수도 있습니다.

404 오류

비-노트북 파일을 열려고 할 때 404 오류가 발생 하는 경우 몇 분 정도 기다린 후 다시 시도 하세요. 작업 영역을 사용 하도록 설정 하 고 webapp가 구성 플래그를 선택할 때까지 몇 분이 지연 됩니다.

resource not found 비-노트북 파일을 Databricks 리포지토리로 끌어오는 후의 오류

Databricks Runtime 8.4 이상을 사용 하지 않는 경우이 오류가 발생할 수 있습니다. Databricks Runtime 8.4 이상을 실행 하는 클러스터는 리포지토리의 비-노트북 파일을 사용 하는 데 필요 합니다.

다시 복제를 제안 하는 오류

There was a problem with deleting folders. The repo could be in an inconsistent state and re-cloning is recommended.

이 오류는 리포지토리에서 폴더를 삭제 하는 동안 문제가 발생 했음을 나타냅니다. 이렇게 하면 삭제 된 폴더가 여전히 존재 하는 일관 되지 않은 상태가 될 수 있습니다. 이 오류가 발생 하는 경우 Databricks는 리포지토리를 삭제 하 고 다시 복제 하 여 상태를 다시 설정 하는 것이 좋습니다.

Unable to set repo to most recent state. This may be due to force pushes overriding commit history on the remote repo. Repo may be out of sync and re-cloning is recommended.

이 오류는 로컬 및 원격 Git 상태에 달라져서가 있음을 나타냅니다. 이는 원격에서 강제 push가 로컬 리포지토리에 있는 최근 커밋을 재정의 하는 경우에 발생할 수 있습니다. Databricks는 Repos 내에서 하드 리셋을 지원 하지 않으며이 오류가 발생 하는 경우 리포지토리를 삭제 하 고 다시 복제 하는 것이 좋습니다.

Repos의 내 관리자 사용 파일이 있지만 원격 리포지토리를 복제 하거나 파일을 기존 저장소로 끌어오는 후 예상 파일이 표시 되지 않습니다.

  • 새 구성을 선택 하려면 브라우저를 새로 고치고 클러스터를 다시 시작 해야 합니다.
  • 클러스터가 8.4 이상 Databricks Runtime 실행 중 이어야 합니다.