ドライバーを使用してUnity Catalog ボリューム内のファイルを管理するDatabricksODBC

この記事では 、Unity Catalog DatabricksODBCドライバー を使用して ボリューム 内のファイルをアップロード、ダウンロード、および削除する方法について説明します。

要件

  • Databricks ODBC ドライバー バージョン 2.8.2 以上。

  • デフォルトでは、ネイティブ クエリ モードが有効になっています。 それ以外の場合は、ODBC 接続文字列にUseNativeQueryプロパティを追加し、その値を1または2に設定します。

ファイルをアップロードする

ファイルをボリュームにアップロードするには、ODBC 接続文字列にStagingAllowedLocalPathsプロパティを追加し、このプロパティの値をアップロードするファイルのパスに設定する必要があります。 別々の場所から複数のファイルをアップロードするには、このプロパティをパスのカンマ区切りリストに設定します (例: /tmp/,/usr/tmp/)。

指定したアップロード場所にある既存のファイルの内容を上書きするには、 OVERWRITEを追加します。

次の Python コード スニペットは、ボリュームにファイルをアップロードする方法を示しています。

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

ファイルをダウンロードする

次の Python コード スニペットは、ボリュームからファイルをダウンロードする方法を示しています。

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

ファイルを削除する

次の Python コード スニペットは、ボリュームからファイルを削除する方法を示しています。

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