Compartir a través de


Administrar archivos en volúmenes de Catálogo de Unity con el controlador ODBC de Databricks (Simba)

En esta página se describe cómo cargar, descargar y eliminar archivos en volúmenes del catálogo de Unity mediante el controlador ODBC de Databricks.

Requisitos

  • Databricks ODBC Driver versión 2.8.2 o posterior
  • Modo de consulta nativo habilitado (valor predeterminado). Si está deshabilitado, agregue UseNativeQuery=1 o UseNativeQuery=2 a la cadena de conexión.

Para obtener un ejemplo completo de Python con la configuración de autenticación, consulte Conexión de Python y pyodbc a Azure Databricks.

Cargar un archivo

Para cargar un archivo, agregue la propiedad StagingAllowedLocalPaths a la cadena de conexión con la ruta del archivo que cargar. Para varias ubicaciones de origen, use una lista separada por comas (por ejemplo, /tmp/,/usr/tmp/).

Importante

En entornos de multitenencia en los que los usuarios controlan la dirección URL de ODBC (como herramientas de BI o servicios para desarrolladores), establezca StagingAllowedLocalPaths en una ubicación sandbox o una ruta de acceso inexistente. Esto impide que los usuarios escriban archivos arbitrarios e interfieran con la implementación interna del servicio.

Para sobrescribir un archivo existente, agregue OVERWRITE a la instrucción .

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

Descarga de un archivo

Utilice GET para descargar un archivo desde un volumen a una ruta 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" +
    "'")

Eliminar un archivo

Use REMOVE para eliminar un archivo de un volumen:

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