Unity Kataloğu birimlerindeki dosyalarla çalışma

Bu sayfada çeşitli kullanıcı arabirimleri, araçlar, kitaplıklar ve diller için Unity Kataloğu birimlerindeki dosyaları yönetmeye yönelik örnekler bulunur.

Databricks, bulut nesne depolamasında tablosal olmayan verilere tüm erişimi yönetmek ve iş yükü destek dosyalarını depolamak için birimlerin kullanılmasını önerir. Örnekler şunlardır:

  • Alım için CSV, JSON ve Parquet gibi veri dosyaları
  • Veri bilimi, ML ve yapay zeka iş yükleri için metin, görüntü ve ses dosyaları
  • Dış sistemlerle tümleştirme için Azure Databricks tarafından yazılan CSV veya JSON yapıtları
  • Kitaplıklar, başlatma betikleri ve yapı çıktıları

Birimler, Userspace (FUSE) bağımlı araçlar ve çerçevelerle çalışan Taşınabilir İşletim Sistemi Arabirimi (POSIX) stili yollar sağlar. Bu sayede POSIX stilinde erişim gerektiren makine öğrenmesi çerçeveleri ve açık kaynak Python modülleri için idealdir. URI düzenleri, POSIX yolları ve birimlerle ilişkileri hakkında ayrıntılı bilgi için bkz. Verilere erişmek için URI düzeni sağlamam gerekiyor mu?.

Birimlerdeki dosyaları yönetme yöntemleri

Her yöntemin hızlı örnekleri için bkz. Unity Kataloğu birimlerindeki dosyalarla çalışma.

Arayüz Description
Katalog Gezgini kullanıcı arabirimi Azure Databricks çalışma alanı aracılığıyla etkileşimli dosya yönetimi
Programlı erişim Apache Spark, Pandas veya SQL kullanarak dosyaları okuma ve yazma
Databricks yardımcı programları Not defterlerinde dbutils.fs'u ya da sihirli komutlar (%fs, %sh) kullanarak dosya işlemlerini gerçekleştirmek.
Dosyaları listeleme ve sorgulama Dosya meta verilerini READ_FILES ile sorgulama ve özelliklere göre filtreleme
SQL komutları SQL anahtar sözcüklerini (LIST, PUT INTO, , GETREMOVE) ve bağlayıcıları kullanarak dosya işlemleri
Databricks CLI Komut satırında databricks fs komutlarını kullanarak işlemler
SDK'lar Python, Java veya Go SDK'larını kullanarak dosya işlemleri
REST API Özel tümleştirmeler için doğrudan API erişimi

Katalog Gezgini'ni kullanma

Katalog Gezgini'nde Unity Kataloğu birimleriyle depolanan dosyalar için yaygın dosya yönetimi görevlerine yönelik seçenekler bulunur.

Bir birimdeki dosyalarla etkileşime geçmek için aşağıdakileri yapın:

  1. Azure Databricks çalışma alanınızda Veri simgesine tıklayın.Katalog'a gidin.
  2. Çalışmak istediğiniz birimi arayın veya inceleyin ve seçin.

Birimleri oluşturma ve yönetme hakkında ayrıntılı bilgi için bkz. Unity Kataloğu birimlerini oluşturma ve yönetme.

Dosyaları bir birime yükleme

Yapılandırılmış, yarı yapılandırılmış veya yapılandırılmamış herhangi bir biçimdeki dosyaları bir birime yükleyebilirsiniz. Hacimler, temel alınan bulut depolaması tarafından desteklenen maksimum boyuta kadar dosyaları destekler. Ancak Azure Databricks kullanıcı arabirimi aracılığıyla bir birime dosya yüklediğinizde 5 GB dosya boyutu sınırı vardır. 5 GB'tan büyük dosyaları karşıya yüklemek için Python için Databricks SDK'sını kullanın. Ayrıntılar için bkz. Unity Kataloğu birimlerindeki dosyaları yönetme.

Gereksinimler

Bir birime yüklemeden önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Unity Kataloğu'nu etkinleştirmiş bir çalışma alanı
  • WRITE VOLUME hedef hacimde
  • USE SCHEMA üst şemada
  • USE CATALOG ana katalogda

Ayrıntılar için bkz. Unity Kataloğu ayrıcalıklar referansı.

Yükleme adımları

  1. Kenar çubuğunda Yeni'ye ve ardından Veri ekle veya karşıya yükle'ye tıklayın.
  2. Dosyaları bir birime yükle'ye tıklayın.
  3. Dosyalar bölümünde, göz at'a tıklayın veya dosyaları bırakma alanına sürükleyip bırakın.
  4. Hedef birim'in altında bir birim veya dizin seçin veya bir birim yolu yapıştırın.

Hedef şemada birim yoksa, Birim oluştur'a tıklayarak bir birim oluşturabilirsiniz. Birimin içinde yeni bir dizin oluşturabilirsiniz.

Kullanıcı arabirimini kullanarak bir birime dosya yükleme

Yükleme kullanıcı arabirimine aşağıdaki yollarla erişebilirsiniz:

  • Katalog Gezgini'nde: Birbirime dosya yükleme> ekleme
  • Dizüstü bilgisayardan: Dosya>dosyaları birime yükle

Sonraki Adımlar

Bir birime yükledikten sonra aşağıdakileri yapabilirsiniz:

Birimden dosya indirme

Bir birimdeki dosyaları indirmek için aşağıdakileri yapın:

  1. Bir veya daha fazla dosya seçin.
  2. Bu dosyaları indirmek için İndir'e tıklayın.

Birimdeki dosyaları silme

Birimdeki dosyaları silmek için aşağıdakileri yapın:

  1. Bir veya daha fazla dosya seçin.
  2. Siltıklayın.
  3. Görüntülenen iletişim kutusunda onaylamak için Sil'e tıklayın.

Boş dizin oluşturma

Bir birimde yeni bir dizin oluşturmak için aşağıdakileri yapın:

  1. Toplu genel bakış sekmesinde Dizin oluştur'a tıklayın.
  2. Bir dizin adı girin.
  3. Oluştur'utıklayın.

Dizin indirme

Birimdeki bir dizini indirmek için aşağıdakileri yapın:

  1. Kebap menü simgesine tıklayın. Dizinin sağındaki kebap menüsü.
  2. Dizini indir'e tıklayın.

Dizin zip dosyası olarak indirilir.

Birimdeki dizinleri silme

Bir birimdeki dizinleri silmek için aşağıdakileri yapın:

  1. Bir veya daha fazla dizin seçin.
  2. Siltıklayın.
  3. Görüntülenen iletişim kutusunda onaylamak için Sil'e tıklayın.

Birimler için Kullanıcı Arayüzü dosya yönetimi görevleri

Aşağıdaki eylemleri gerçekleştirmek için bir dosya adının yanındaki kebap menüsü Kebap menü simgesine tıklayın:

  • Yolu kopyala
  • Dosyayı indirme
  • Dosyayı sil
  • Tablo oluştur

Birimdeki verilerden tablo oluşturma

Azure Databricks bir Unity Kataloğu biriminde depolanan bir dosyadan, dosyadan veya dosya dizininden Unity Kataloğu yönetilen tablosu oluşturmak için bir kullanıcı arabirimi sağlar.

Hedef şemada CREATE TABLE izinlerinizin olması ve çalışan bir SQL ambarı erişimine sahip olmanız gerekir.

  1. Bir veya daha fazla dosya veya dizin seçin. Dosyalar aynı veri düzenine sahip olmalıdır.

  2. Tablo oluştur'a tıklayın. Birimlerden tablo oluştur iletişim kutusu görüntülenir.

  3. Sağlanan iletişim kutusunu kullanarak verilerin önizlemesini gözden geçirin ve aşağıdaki yapılandırmaları tamamlayın:

    • Yeni tablo oluştur seçin veya varolan tablonun üzerine yaz
    • Hedef Kataloğu ve Şemayı seçin.
    • Tablo adını belirtin.
    • (İsteğe bağlı) Varsayılan sütun adlarını ve türlerini geçersiz kılın veya sütunları dışlama seçeneğini belirleyin.

    Uyarı

    Ek seçenekleri görüntülemek için Gelişmiş öznitelikler'e tıklayın.

  4. Tabloyu belirtilen özniteliklerle oluşturmak için Tablo oluştur'a tıklayın. Tamamlandıktan sonra, Katalog Gezgini tablo ayrıntılarını görüntüler.

Programatik olarak birimlerdeki dosyalarla çalışma

Aşağıdaki biçimi kullanarak desteklenen tüm dillerden ve çalışma alanı düzenleyicilerinden birimler halinde dosyaları okuyun ve yazın:

/Volumes/catalog_name/schema_name/volume_name/path/to/files

Herhangi bir bulut nesne depolama konumundaki dosyalarla etkileşimde bulunduğunuz şekilde birimlerdeki dosyalarla etkileşim kurarsınız. Bu, şu anda bulut URI'leri, DBFS bağlama yollarını veya verilerle veya dosyalarla etkileşim kurmak için DBFS kök yollarını kullanan kodu yönetiyorsanız, bunun yerine kodunuzu birimleri kullanacak şekilde güncelleştirebileceğiniz anlamına gelir.

Uyarı

Birimler yalnızca tablosal olmayan veriler için kullanılır. Databricks, Unity Kataloğu tablolarını kullanarak tablo verilerini kaydetmenizi ve ardından tablo adlarını kullanarak veri okumanızı ve yazmanızı önerir.

Birimlerdeki verileri okuma ve yazma

Birimlerdeki veri dosyalarını okumak ve yazmak için Apache Spark, pandas, Spark SQL ve diğer OSS kitaplıklarını kullanın.

Aşağıdaki örneklerde bir birimde depolanan CSV dosyasının okunması gösterilmektedir:

Piton

df = spark.read.format("csv").load("/Volumes/catalog_name/schema_name/volume_name/data.csv")

display(df)

Pandas

import pandas as pd

df = pd.read_csv('/Volumes/catalog_name/schema_name/volume_name/data.csv')

display(df)

SQL

SELECT * FROM csv.`/Volumes/catalog_name/schema_name/volume_name/data.csv`

Birimlerdeki dosyalar için yardımcı program komutları

Databricks, birimlerdeki dosyaları yönetmek için aşağıdaki araçları sağlar:

İnternet'ten dosya indirmek, dosyaları sıkıştırmak ve dosyaları kısa ömürlü blok depolamadan birimlere taşımak için bu araçları kullanma örneği için bkz. İnternet'ten veri indirme.

Aşağıdaki örnekte gösterildiği gibi Python os modülü gibi dosya yardımcı programı komutları için OSS paketlerini de kullanabilirsiniz:

import os

os.mkdir('/Volumes/catalog_name/schema_name/volume_name/directory_name')

Birimlerdeki DataFrame denetim noktaları

DataFrame denetim noktalarını depolamak için Unity Kataloğu birim yollarını kullanabilirsiniz. DataFrame kontrol noktaları, DataFrame'in yürütme planını keser ve içeriği depolama alanına kaydeder. Bu, DataFrame'leri yeniden kullanırken aşırı uzun kökenleri önleyerek yinelemeli algoritmaların ve karmaşık sorgu planlarının performansını artırabilir.

Denetim noktalarını Unity Kataloğu birimlerinde depolamak, denetim noktası verilerinize idare ve erişim denetimleri uygulayarak yönetilmeyen bulut depolama yollarından uzaklaşmanıza yardımcı olur.

Gereksinimler

  • Databricks Runtime 18.1 veya üzeri.
  • Ayrılmış veya standart erişim moduyla Unity Catalog etkinleştirilmiş hesaplama. Birimlerdeki DataFrame denetim noktaları sunucusuz işlemde desteklenmez.

Denetim noktası dizinini yapılandırma

Denetim noktası dizinini ayarlama yöntemi, işleminizin erişim moduna bağlıdır:

Ayrılmış erişim modu

Ayrılmış erişim moduyla işlemde kullanın SparkContext.setCheckpointDir:

spark.checkpoint.dir=/Volumes/<catalog>/<schema>/<volume>/checkpoint
Standart erişim modu

Standart erişim moduyla işlemde spark.checkpoint.dir Spark yapılandırmasını kullanın:

spark.conf.set("spark.checkpoint.dir", "/Volumes/<catalog>/<schema>/<volume>/checkpoints")

DataFrame denetim noktası oluşturma

Denetim noktası dizinini yapılandırdıktan sonra, DataFrame.checkpoint() kullanarak yürütme planını kısaltın ve verileri kaydedin.

df = spark.range(100).withColumn("doubled", col("id") * 2)
checkpointed_df = df.checkpoint()

Uyarı

DataFrame denetim noktaları Yapılandırılmış Akış denetim noktalarından farklıdır. Akış denetim noktası verilerini birimlerde depolama hakkında bilgi için bkz. Yapılandırılmış Akış denetim noktaları.

SQL ile birimlerdeki dosyaları listeleme ve sorgulama

Tablo değerli işlev SQL işlevini kullanarak read_files bir birimdeki dosyaları listeleyebilir ve meta verilerini sorgulayabilirsiniz. Bu, dosyaları bulmak, dosya özelliklerine göre filtrelemek ve yapay zeka işlevleriyle işlenmek üzere dosyaları hazırlamak için kullanışlıdır.

ile kullanıldığında READ_FILESformat => "binaryFile"işlev aşağıdaki sütunları içeren bir tablo döndürür:

  • path: Tam dosya yolu
  • modificationTime: Son değişiklik zaman damgası
  • length: Bayt cinsinden dosya boyutu
  • content: İkili veri olarak ham dosya içeriği

Sütunu seçerek _metadata, file_path, file_name, ve file_size gibi ek dosya bilgilerine erişebilirsinizfile_modification_time.

Birimdeki tüm dosyaları listeleme

Aşağıdaki örnekte, ikili içerik hariç bir birimdeki tüm dosyalar listeleniyor:

SELECT
  * EXCEPT (content),
  _metadata
FROM read_files(
  "/Volumes/<catalog>/<schema>/<volume>",
  format => "binaryFile"
);

Dosyaları türe ve boyuta göre filtreleme

Aşağıdaki örnek, 20 KB ile 1 MB arasındaki görüntü dosyaları için filtreler:

SELECT * EXCEPT (content), _metadata
FROM read_files(
  "/Volumes/my_catalog/my_schema/my_volume",
  format => "binaryFile",
  fileNamePattern => "*.{jpg,jpeg,png,JPG,JPEG,PNG}"
)
WHERE _metadata.file_size BETWEEN 20000 AND 1000000;

Dosyaları değiştirme zamanına göre filtreleme

Aşağıdaki örnek, son gün içinde değiştirilen PDF dosyalarını bulur:

SELECT * EXCEPT (content), _metadata
FROM read_files(
  "/Volumes/my_catalog/my_schema/my_volume",
  format => "binaryFile",
  fileNamePattern => "*.{pdf,PDF}"
)
WHERE modificationTime >= current_timestamp() - INTERVAL 1 DAY;

Yapay zeka işlevleriyle görüntüleri işleme

Aşağıdaki örnek, görüntü dosyaları için açıklamalar oluşturmak üzere işlev işlevini kullanırai_query:

SELECT
  path AS file_path,
  ai_query(
    'databricks-llama-4-maverick',
    'Describe this image in ten words or less: ',
    files => content
  ) AS result
FROM read_files(
  "/Volumes/my_catalog/my_schema/my_volume",
  format => "binaryFile",
  fileNamePattern => "*.{jpg,jpeg,png}"
)
WHERE _metadata.file_size < 1000000
  AND _metadata.file_name LIKE '%robots%';

Yapay zeka işlevleriyle belgeleri ayrıştırma

Aşağıdaki örnek, PDF alındı bilgilerinden yapılandırılmış verileri ayıklamak için ai_parse_document işlevini kullanır:

SELECT
  path AS file_path,
  ai_parse_document(content, map('version', '2.0')) AS result
FROM read_files(
  "/Volumes/main/public/my_files/",
  format => "binaryFile",
  fileNamePattern => "*.{pdf,PDF}"
)
WHERE _metadata.file_name ILIKE '%receipt%';

Harici araçlar kullanarak birimler içindeki dosyaları yönetme

Databricks, yerel ortamınızdan veya tümleşik sistemlerinizden birimlerdeki dosyaları program aracılığıyla yönetmek için bir araç paketi sağlar.

Birimlerdeki dosyalar için SQL komutları

Azure Databricks, birimlerdeki dosyalarla etkileşime geçiş için aşağıdaki SQL anahtar sözcüklerini destekler:

Azure Databricks not defterlerinde ve SQL sorgu düzenleyicisinde LIST yalnızca komut desteklenir. Diğer SQL komutları (PUT INTO, GETve REMOVE) birimlerindeki dosyaların yönetilmesini destekleyen aşağıdaki Databricks SQL bağlayıcıları ve sürücüleri aracılığıyla kullanılabilir:

Databricks CLI ile birimlerdeki dosyaları yönetme

içindeki databricks fsalt komutları kullanın. Bakınız fs komut grubu.

Uyarı

Databricks CLI, tüm volüm yollarından önce şema dbfs:/'ı gerektirir. Örneğin, dbfs:/Volumes/catalog_name/schema_name/volume_name/path/to/data.

SDK'larla birimlerdeki dosyaları yönetme

Aşağıdaki SDK'lar birimlerdeki dosyaların yönetilmesini destekler:

REST API ile birimlerdeki dosyaları yönetme

Birimlerdeki dosyaları yönetmek için Dosyalar API'sini kullanın.

Birimlerdeki dosyalar için REST API örnekleri

Aşağıdaki örnekler, birimlerde dosya yönetimi görevlerini gerçekleştirmek için curl ve Databricks REST API'sini kullanır.

Aşağıdaki örnek, belirtilen birimde adlı my-folder boş bir klasör oluşturur.

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

Aşağıdaki örnek, birimdeki belirtilen yolda belirtilen verilerle adlı data.csv bir dosya oluşturur.

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv?overwrite=true" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--header "Content-Type: application/octet-stream" \
--data-binary $'id,Text\n1,Hello World!'

Aşağıdaki örnek, belirtilen yolda bir birimin içeriğini listeler. Bu örnek, daha kolay okunması için yanıt gövdesinin JSON'unu biçimlendirmek için jq kullanır.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

Aşağıdaki örnekte, belirtilen yoldaki bir birimdeki bir klasörün içeriği listelenir. Bu örnek, daha kolay okunması için yanıt gövdesinin JSON'unu biçimlendirmek için jq kullanır.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

Aşağıdaki örnek, bir birimde belirtilen yolda bulunan bir dosyanın içeriğini yazdırır.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

Aşağıdaki örnek, belirtilen yoldaki bir dosyayı bir birimden siler.

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

Aşağıdaki örnek, belirtilen birimden bir klasörü siler.

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

Hacimlerdeki dosyalarla çalışma kısıtlamaları

Birimlerdeki dosyalarla çalışmadan önce aşağıdaki sınırlamaları göz önünde bulundurun:

  • Doğrudan ekleme veya sıralı olmayan (rastgele) yazma işlemleri desteklenmez. Bu, Zip ve Excel dosyaları yazma gibi işlemleri etkiler. Bu iş yükleri için:

    1. önce yerel diskte işlemleri gerçekleştirme
    2. Sonuçları birime kopyalayın

    Örneğin:

    # python
    import xlsxwriter
    from shutil import copyfile
    
    workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.write(0, 0, "Key")
    worksheet.write(0, 1, "Value")
    workbook.close()
    
    copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
    
  • Seyrek dosyalar desteklenmez. Seyrek dosyaları kopyalamak için kullanın cp --sparse=never:

    $ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    error writing '/dbfs/sparse.file': Operation not supported
    $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file