Udostępnij przez


Zarządzaj plikami w woluminach katalogu Unity za pomocą sterownika ODBC z Databricks (Simba)

Na tej stronie opisano sposób przekazywania, pobierania i usuwania plików w woluminach Unity Catalog przy użyciu sterownika ODBC usługi Databricks.

Wymagania

  • Sterownik ODBC usługi Databricks w wersji 2.8.2 lub nowszej
  • Włączony tryb zapytania natywnego (ustawienie domyślne). Jeśli to ustawienie jest wyłączone, dodaj UseNativeQuery=1 lub UseNativeQuery=2 do parametrów połączenia.

Pełny przykład języka Python z konfiguracją uwierzytelniania można znaleźć w temacie Connect Python and pyodbc to Azure Databricks (Łączenie języka Python i pyodbc z usługą Azure Databricks).

Przekazywanie pliku

Aby przekazać plik, dodaj właściwość StagingAllowedLocalPaths do łańcucha połączenia ze ścieżką pliku do przekazania. W przypadku wielu lokalizacji źródłowych użyj listy rozdzielanej przecinkami (na przykład /tmp/,/usr/tmp/).

Ważne

W środowiskach wielodostępnych, w których użytkownicy kontrolują adres URL ODBC (np. narzędzia typu BI lub usługi dla deweloperów), ustaw StagingAllowedLocalPaths na lokalizację piaskownicy lub nieistniejącą ścieżkę. Uniemożliwia to użytkownikom zapisywanie dowolnych plików i zakłócanie wdrażania wewnętrznego usługi.

Aby zastąpić istniejący plik, dodaj OVERWRITE do instrukcji .

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")

Pobieranie pliku

Użyj GET, aby pobrać plik z woluminu do ścieżki lokalnej:

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" +
    "'")

Usuwanie pliku

Użyj REMOVE polecenia , aby usunąć plik z woluminu:

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