Gerenciar arquivos em volumes Unity Catalog com o driver ODBC Databricks (Simba)
Esta página descreve como upload, download e excluir arquivos em volumes Unity Catalog usando o driver ODBC Databricks.
Requisitos
- Databricks ODBC Driver versão 2.8.2 ou superior
- Modo de consulta nativa ativado (default). Se desativado, adicione
UseNativeQuery=1ouUseNativeQuery=2às suas strings de conexão.
Para um exemplo completo em Python com configuração de autenticação, consulte Conectar Python e pyodbc ao Databricks.
carregar um arquivo
Para upload de um arquivo, adicione a propriedade StagingAllowedLocalPaths às suas strings de conexão com o caminho do arquivo a ser upload. Para vários locais de origem, use uma lista separada por vírgulas (por exemplo, /tmp/,/usr/tmp/).
Em ambientes multi-tenant onde os usuários controlam o URL ODBC (como ferramentas BI ou serviço de desenvolvedor), defina StagingAllowedLocalPaths para um local sandbox ou um caminho inexistente. Isso impede que os usuários escrevam arquivos arbitrários e interfiram na implantação interna do serviço.
Para sobrescrever um arquivo existente, adicione OVERWRITE à instrução.
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
Use GET para download um arquivo de um volume para um caminho local:
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
Use REMOVE para 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" +
"'")