Administración de archivos en volúmenes de Catálogo de Unity con el controlador ODBC de Databricks
En este artículo se describe cómo cargar, descargar y eliminar archivos en el catálogo de Unity volúmenes mediante el controlador ODBC Databricks.
- Controlador ODBC de Databricks versiones 2.8.2 o posteriores.
- De manera predeterminada, el modo de consulta nativa está habilitado. De lo contrario, agregue
UseNativeQuery
propiedad a la cadena de conexión ODBC, estableciendo su valor en1
o2
.
Para cargar un archivo en un volumen, debe agregar la propiedad StagingAllowedLocalPaths
a la cadena de conexión ODBC, estableciendo este valor de propiedad en la ruta de acceso del archivo que se va a cargar. Para cargar varios archivos desde ubicaciones distintas, establezca esta propiedad en una lista de rutas separadas por comas, por ejemplo /tmp/,/usr/tmp/
.
Para invalidar el contenido de cualquier archivo existente en la ubicación de carga especificada, agregue OVERWRITE
.
El siguiente fragmento de código de Python muestra cómo cargar un archivo en un volumen.
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")
El siguiente fragmento de código de Python muestra cómo descargar un archivo de un volumen.
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" +
"'")
El siguiente fragmento de código de Python muestra cómo 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" +
"'")