Aracılığıyla paylaş


Databricks ODBC Sürücüsü (Simba) ile Unity Kataloğu birimlerindeki dosyaları yönetme

Bu sayfada, Databricks ODBC Sürücüsü kullanılarak Unity Kataloğu birimlerindeki dosyaların nasıl karşıya yüklendiği, indirileceği ve silineceği açıklanır.

Gereksinimler

  • Databricks ODBC Sürücüsü sürüm 2.8.2 veya üzeri
  • Yerel sorgu modu etkin (varsayılan). Devre dışı bırakıldıysa, UseNativeQuery=1 veya UseNativeQuery=2 ekleyerek bağlantı dizesine ekleyin.

Kimlik doğrulaması kurulumuyla ilgili eksiksiz bir Python örneği için bkz. Python ve pyodbc'yi Azure Databricks'e bağlama.

Dosya yükle

Bir dosyayı karşıya yüklemek için, StagingAllowedLocalPaths özelliğini karşıya yüklenecek dosyanın yolu ile bağlantı dizesine ekleyin. Birden çok kaynak konumu için virgülle ayrılmış bir liste kullanın (örneğin, /tmp/,/usr/tmp/).

Önemli

Kullanıcıların ODBC URL'sini denetlediği (BI araçları veya geliştirici hizmetleri gibi) çok kiracılı ortamlarda, StagingAllowedLocalPaths'i korumalı alan konumuna veya var olmayan bir yola ayarlayın. Bu, kullanıcıların rastgele dosyalar yazmasını ve hizmetin iç dağıtımına müdahale etmesini engeller.

Varolan bir dosyanın üzerine yazmak için deyime ekleyin 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")

Dosya indirme

Dosyayı bir birimden yerel bir yola indirmek için GET kullanın.

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

Dosya silme

Bir birimden dosya silmek için kullanın REMOVE :

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