使用 Databricks ODBC 驱动程序管理 Unity 目录卷中的文件 (Simba)

本页介绍如何使用 Databricks ODBC 驱动程序上传、下载和删除 Unity 目录中的文件。

要求

  • Databricks ODBC 驱动程序版本 2.8.2 或更高版本
  • 已启用本机查询模式(默认值)。 如果已禁用,请在连接字符串中添加 UseNativeQuery=1UseNativeQuery=2

有关身份验证设置的完整 Python 示例,请参阅 将 Python 和 pyodbc 连接到 Azure Databricks

上传文件

若要上传文件,请将 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" +
    "'")