Zarządzać plikami w woluminach Unity Catalog przy użyciu sterownika ODBC Databricks
W tym artykule opisano sposób przekazywania, pobierania i usuwania plików w katalogu aparatu Unity
Wymagania
- Sterownik ODBC usługi Databricks w wersji 2.8.2 lub nowszej.
- Domyślnie włączony jest natywny tryb zapytania. W przeciwnym razie dodaj
UseNativeQuery
właściwość do parametry połączenia ODBC, ustawiając jej wartość na1
lub2
.
Przekazywanie pliku
Aby przekazać plik do woluminu, należy dodać StagingAllowedLocalPaths
właściwość do parametry połączenia ODBC, ustawiając wartość tej właściwości na ścieżkę pliku do przekazania. Aby przekazać wiele plików z oddzielnych lokalizacji, ustaw tę właściwość na rozdzielaną przecinkami listę ścieżek, na przykład /tmp/,/usr/tmp/
.
Aby zastąpić zawartość dowolnego istniejącego pliku w określonej lokalizacji przekazywania, dodaj element OVERWRITE
.
Poniższy fragment kodu w języku Python pokazuje, jak przekazać plik do woluminu.
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
Poniższy fragment kodu w języku Python pokazuje, jak pobrać plik z woluminu.
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
Poniższy fragment kodu w języku Python pokazuje, jak 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" +
"'")