다음을 통해 공유


Databricks ODBC 드라이버(Simba)를 사용하여 Unity 카탈로그 볼륨의 파일 관리

이 페이지에서는 Databricks ODBC 드라이버를 사용하여 Unity 카탈로그 볼륨에서 파일을 업로드, 다운로드 및 삭제하는 방법을 설명합니다.

요구 사항

  • Databricks ODBC 드라이버 버전 2.8.2 이상
  • 기본 쿼리 모드를 사용하도록 설정(기본값). 사용하지 않도록 설정된 경우, 연결 문자열에 UseNativeQuery=1 또는 UseNativeQuery=2을 추가하십시오.

인증 설정이 포함된 전체 Python 예제는 Azure Databricks에 Python 및 pyodbc 연결을 참조하세요.

파일 업로드하기

파일을 업로드하려면 업로드할 파일의 경로를 사용하여 연결 문자열에 속성을 추가 StagingAllowedLocalPaths 합니다. 여러 원본 위치의 경우 쉼표로 구분된 목록(예: /tmp/,/usr/tmp/)을 사용합니다.

중요합니다

사용자가 ODBC URL(예: BI 도구 또는 개발자 서비스)을 제어하는 다중 테넌트 환경에서 샌드박스 위치 또는 존재하지 않는 경로로 설정합니다 StagingAllowedLocalPaths . 이렇게 하면 사용자가 임의의 파일을 작성하고 서비스의 내부 배포를 방해하지 않습니다.

기존 파일을 덮어쓰려면 OVERWRITE를 구문에 추가합니다.

conn_string = "".join([
    "DRIVER=", os.getenv("ODBC_DRIVER", "/Library/simba/spark/lib/libsparkodbc_sbu.dylib"),
    ";Host=", os.getenv("ODBC_HOST_NAME", "<<HOST_NAME>>"),
    ";PORT=443",
    ";HTTPPath=", os.getenv("ODBC_HTTP_PATH", "/sql/1.0/endpoints/1234567890"),
    ";AuthMech=11",
    ";SSL=1",
    ";ThriftTransport=2",
    ";SparkServerType=3",
    ";Auth_Flow=0",
    ";Auth_AccessToken=", os.getenv("API_TOKEN", "<<NO_ACCESS_TOKEN_IS_SET>>"),
    ";StagingAllowedLocalPaths=", "/tmp"),
    os.getenv("ODBC_OPTIONS", ""),
])

conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("PUT '" +
    "/tmp/my-data.csv" +
    "' INTO '" +
    "/Volumes/main/default/my-volume/my-data.csv" +
    "' OVERWRITE")

파일 다운로드

볼륨에서 로컬 경로로 파일을 다운로드하는 데 사용합니다 GET .

conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("GET '" +
    "/Volumes/main/default/my-volume/my-data.csv" +
    "' TO '" +
    "/tmp/my-downloaded-data.csv" +
    "'")

파일 삭제하기

볼륨에서 파일을 삭제하는 데 사용합니다 REMOVE .

conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("REMOVE '" +
    "/Volumes/main/default/my-volume/my-data.csv" +
    "'")