Gerenciar arquivos em volumes do Unity Catalog com o driver ODBC do Databricks
Este artigo descreve como carregar, baixar e excluir arquivos em volumes do Unity Catalog usando o Driver ODBC do Databricks.
Requisitos
- Driver ODBC do Databricks versões 2.8.2 ou superior.
- Por padrão, o modo de consulta nativo é habilitado. Caso contrário, adicione a propriedade
UseNativeQuery
à cadeia de conexão do ODBC, definindo o valor como1
ou2
.
Fazer upload de um arquivo
Para carregar um arquivo em um volume, adicione a propriedade StagingAllowedLocalPaths
à cadeia de conexão do ODBC, definindo o valor dessa propriedade para o caminho do arquivo que será carregado. Para carregar vários arquivos de locais separados, defina essa propriedade como uma lista separada por vírgulas de caminhos, por exemplo /tmp/,/usr/tmp/
.
Para substituir o conteúdo de qualquer arquivo existente no local de upload especificado, adicione OVERWRITE
.
O trecho de código Python a seguir mostra como carregar um arquivo em um volume.
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")
Baixar um arquivo
O trecho de código Python a seguir mostra como baixar um arquivo de um volume.
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" +
"'")
Excluir um arquivo
O trecho de código Python a seguir mostra como excluir um arquivo de um volume.
conn = pyodbc.connect(conn_string, autocommit=True)
cursor = conn.cursor()
cursor.execute("REMOVE '" +
"/Volumes/main/default/my-volume/my-data.csv" +
"'")