Databricks Dosya Sistemi (DBFS)

Databricks Dosya Sistemi (DBFS), bir Azure Databricks çalışma alanına takılı, dağıtılmış bir dosya sistemidir ve Azure Databricks kümelerinde kullanılabilir. DBFS, ölçeklenebilir nesne depolamanın en üstünde bir soyutlamadır ve aşağıdaki avantajları sunar:

  • , Kimlik bilgileri gerektirmeden verilere sorunsuzca erişebilmek için depolama nesnelerini bağlayabilmenizi sağlar.
  • , Depolama URL 'Leri yerine dizin ve dosya semantiğini kullanarak nesne depolama ile etkileşimde bulunabilmeniz için izin verir.
  • Dosyaları nesne depolamaya devam ettirir, bu nedenle bir kümeyi bitirdikten sonra verileri kaybetmezsiniz.

DBFS izinleri hakkında önemli bilgiler

Tüm kullanıcılar, dBFS köküdışında, dBFS 'ye bağlanmış nesne depolama alanındaki nesnelere okuma ve yazma erişimi sağlar.

DBFS kökü

DBFS’deki varsayılan depolama konumu DBFS kökü olarak bilinir. Çeşitli veri türleri aşağıdaki DBFS kök konumlarında depolanır:

  • /FileStore: İçeri aktarılan veri dosyaları, oluşturulan çizimler ve karşıya yüklenen kitaplıklar. Bkz. özel DBFS kök konumları.
  • /databricks-datasets: Örnek genel veri kümeleri. Bkz. özel DBFS kök konumları.
  • /databricks-results: Bir sorgunun tam sonuçları indirilerek oluşturulan dosyalar.
  • /databricks/init: Genel ve küme adı (kullanım dışı) başlatma betikleri.
  • /user/hive/warehouse: Dış olmayan Hive tablolarının verileri ve meta verileri.

Yeni bir çalışma alanında, DBFS kökü aşağıdaki varsayılan klasörlere sahiptir:

DBFS kök varsayılan klasörleri

DBFS kökü Ayrıca, bu görünmeyen ve doğrudan erişilemeyen bağlama noktası meta verileri ve kimlik bilgileri ve belirli türlerdeki Günlükler dahil olmak üzere verileri içerir.

Yapılandırma ve kullanım önerileri

DBFS kökü, çalışma alanı oluşturmasırasında oluşturulur.

Bağlama noktası yollarına () yazılan veriler /mnt dBFS kökünün dışında saklanır. DBFS kökü yazılabilir olsa da, Databricks verileri DBFS kökünde değil, bağlı nesne depolamada depolamanızı önerir. DBFS kökü, üretim müşteri verileri için tasarlanmamıştır.

Bir müşteri tarafından yönetilen anahtarla DBFS kök verilerinin isteğe bağlı şifrelemesi

DBFS kök verilerini, müşteri tarafından yönetilen bir anahtarla şifreleyebilirsiniz. Bkz. DBFS kökü için müşteri tarafından yönetilen anahtarları yapılandırma

Özel DBFS kök konumları

Aşağıdaki makalelerde özel DBFS kök konumları hakkında daha ayrıntılı bilgi sağlanmaktadır:

Kullanıcı Arabirimini kullanarak DBFS’ye göz atma

DBFS dosya tarayıcısını kullanarak DBFS nesnelerine gözatıp arama yapabilirsiniz.

Not

Yönetici kullanıcının onu kullanabilmeniz için önce DBFS tarayıcı arabirimini etkinleştirmesi gerekir. Bkz. DBFS dosya tarayıcısını yönetme.

  1. Kenar çubuğunda veri simgesi verileri ' ne tıklayın.
  2. Sayfanın üst kısmındaki dBFS düğmesine tıklayın.

Tarayıcı, DBFS nesnelerini dikey kulvarlar hiyerarşisinde görüntüler. Hiyerarşiyi genişletmek için bir nesne seçin. Bir DBFS nesnesi bulmak için herhangi bir kulvardaki önek aramasını kullanın.

DBFS 'ye gözatamıyorum

DBFS CLI, dBFS API, databricks dosya sistemi yardımcı programı (dbutils. FS), Spark API 'lerive yerel dosya API 'lerinikullanarak da dBFS nesnelerini listeleyebilirsiniz. Bkz. DBFS 'ye erişme.

Nesne depolamayı dBFS 'ye bağlama

Nesne depolamayı DBFS 'ye bağlamak, nesne depolamada bulunan nesnelere yerel dosya sistemmiş gibi erişmenizi sağlar.

azure blob depolama kapsayıcıları ve Azure Data Lake Storage hesaplarını bağlama ve çıkarma hakkında daha fazla bilgi için bkz. azure blob depolama kapsayıcıları 'nı dbfs 'ye bağlama Azure Data Lake Storage, kimlik bilgisi geçişi kullanarak dbfs 'yebağlama, hizmet sorumlusu ve OAuth 2,0 kullanarak kaynak Azure Data Lake Storage 1. bağlamave ADLS 2. depolama bağlama.

Önemli

İç içe bağlama desteklenmiyor . Örneğin, aşağıdaki yapı desteklenmez:

  • storage1 olarak bağlandı /mnt/storage1
  • storage2 olarak bağlandı /mnt/storage1/storage2

Databricks, her depolama nesnesi için ayrı bağlama girişleri oluşturmayı önerir:

  • storage1 olarak bağlandı /mnt/storage1
  • storage2 olarak bağlandı /mnt/storage2

DBFS’ye erişme

Önemli

Tüm kullanıcılar, dBFS köküdışında, dBFS 'ye bağlanmış nesne depolama alanındaki nesnelere okuma ve yazma erişimi sağlar. Daha fazla bilgi için bkz. DBFS izinleri hakkında önemli bilgiler.

Karşıya dosya yükleme arabiriminikullanarak dBFS 'e veri yükleyebilir ve dBFS CLI, dBFS API, databricks dosya sistemi yardımcı programı (dbutils. FS), Spark API 'lerive yerel dosya API 'lerinikullanarak dBFS nesnelerini karşıya yükleyebilir ve erişim sağlayabilirsiniz.

Azure Databricks kümesinde, Databricks dosya sistemi yardımcı programını, Spark API 'Lerini veya yerel dosya API 'Lerini kullanarak DBFS nesnelerine erişirsiniz. Yerel bir bilgisayarda, Databricks CLı veya DBFS API 'sini kullanarak DBFS nesnelerine erişirsiniz.

Bu bölümdeki konular:

DBFS ve yerel sürücü düğümü yolları

DBFS 'deki dosyalarla veya kümenin yerel sürücü düğümünde çalışabilirsiniz. Veya gibi MAGIC komutlarını kullanarak dosya sistemine erişebilirsiniz %fs %sh . Databricks dosya sistemi yardımcı programını (dbutils. FS)de kullanabilirsiniz.

Azure Databricks, bulutta depolanan dosyalara yerel erişim sağlamak için bir SIGORTASı bağlama kullanır. Bir SIGORTASı bağlama, güvenli, sanal bir dosya sistemi.

DBFS 'de dosyalara erişme

Varsayılan blog depolaması 'nın (root) yolu dbfs:/ .

Ve için varsayılan konum %fs dbutils.fs köküdür. Bu nedenle, köke veya bir dış sepete okumak veya buradan yazmak için:

%fs <command> /<path>
dbutils.fs.<command> ("/<path>/")

%sh Yerel dosya sisteminden varsayılan olarak okur. Kökteki köke veya bağlı yollara %sh , ile yolun ön yüzine erişmek için /dbfs/ . Tipik kullanım örneği, TensorFlow veya scikit gibi tek düğümlü kitaplıklarla çalışıyorsanız, bulut depolama alanına veri okumak ve yazmak için kullanılır.

%sh <command> /dbfs/<path>/

Tek düğümlü dosya sistemi API 'Lerini de kullanabilirsiniz:

import os
os.<command>('/dbfs/tmp')
Örnekler
# Default location for %fs is root
%fs ls /tmp/
%fs mkdirs /tmp/my_cloud_dir
%fs cp /tmp/test_dbfs.txt /tmp/file_b.txt
# Default location for dbutils.fs is root
dbutils.fs.ls ("/tmp/")
dbutils.fs.put("/tmp/my_new_file", "This is a file in cloud storage.")
# Default location for %sh is the local filesystem
%sh ls /dbfs/tmp/
# Default location for os commands is the local filesystem
import os
os.listdir('/dbfs/tmp')

Yerel dosya sisteminde dosyalara erişim

%fs ve, dbutils.fs kökten () varsayılan olarak okundu dbfs:/ . Yerel dosya sisteminden okumak için, kullanmanız gerekir file:/ .

%fs <command> file:/<path>
dbutils.fs.<command> ("file:/<path>/")

%sh Yerel dosya sisteminden varsayılan olarak okur, bu nedenle şunu kullanmayın file:/ :

%sh <command> /<path>
Örnekler
# With %fs and dbutils.fs, you must use file:/ to read from local filesystem
%fs ls file:/tmp
%fs mkdirs file:/tmp/my_local_dir
dbutils.fs.ls ("file:/tmp/")
dbutils.fs.put("file:/tmp/my_new_file", "This is a file on the local driver node.")
# %sh reads from the local filesystem by default
%sh ls /tmp
Bağlı nesne depolamadaki dosyalara erişin

Nesne depolamayı DBFS 'ye bağlamak, nesne depolamada bulunan nesnelere yerel dosya sistemmiş gibi erişmenizi sağlar.

Örnekler
dbutils.fs.ls("/mnt/mymount")
df = spark.read.text("dbfs:/mymount/my_file.txt")
Özet Tablo ve diyagram

Tablo ve diyagram, bu bölümde açıklanan komutları ve her bir sözdiziminin ne zaman kullanılacağını özetler ve gösterir.

Komut Varsayılan konum Kökten okumak için Yerel dosya sisteminden okumak için
%fs Root file:/Yola Ekle
%sh Yerel sürücü düğümü /dbfsYola Ekle
dbutils.fs Root file:/Yola Ekle
os.<command> Yerel sürücü düğümü /dbfsYola Ekle

Dosya yolları diyagramı

Karşıya dosya yükleme arabirimi

Yerel makinenizde Azure Databricks ile analiz etmek istediğiniz küçük veri dosyalarınız varsa, iki dosya yükleme arabiriminden birini kullanarak bunları Databricks dosya sistemine (dBFS) kolayca içeri aktarabilirsiniz: dBFS dosya tarayıcısından veya bir not defterinden.

Dosyalar Filestore dizinine yüklenir.

dosya tarayıcısından dbfs 'ye veri Upload

Not

Bu özellik varsayılan olarak devre dışıdır. Bir yöneticinin kullanabilmeniz için önce DBFS tarayıcı arabirimini etkinleştirmesi gerekir. Bkz. DBFS dosya tarayıcısını yönetme.

  1. Kenar çubuğunda veri simgesi verileri ' ne tıklayın.

  2. Sayfanın üst kısmındaki dBFS düğmesine tıklayın.

  3. sayfanın üst kısmındaki Upload düğmesine tıklayın.

  4. verileri dbfs 'ye Upload iletişim kutusunda, isteğe bağlı olarak bir hedef dizin seçin veya yeni bir tane girin.

  5. Dosyalar kutusunda, karşıya yüklenecek yerel dosyayı seçmek için dosyayı sürükleyip bırakın veya dosya tarayıcısını kullanın.

    tarayıcıdan dbfs 'ye Upload

Karşıya yüklenen dosyalara, çalışma alanına erişimi olan herkes erişebilir.

verileri bir not defterinden dbfs 'ye Upload

Not

Bu özellik varsayılan olarak etkindir. Bir yönetici Bu özelliği devre dışı bırakıldıysa, dosyaları karşıya yükleme seçeneğiniz olmayacaktır.

Kullanıcı arabirimini kullanarak tablo oluşturmak için, bkz. Kullanıcı arabirimini kullanarak tablo oluşturma.

Bir not defterinde kullanmak üzere verileri karşıya yüklemek için aşağıdaki adımları izleyin.

  1. yeni bir not defteri oluşturun veya var olanı açın, sonra da dosya > Upload verileri ' ne tıklayın

    Verileri karşıya yükleme

  2. Karşıya yüklenen dosyayı depolamak için DBFS 'de bir hedef dizin seçin. Hedef dizin varsayılan olarak olur /shared_uploads/<your-email-address>/ .

    Karşıya yüklenen dosyalara, çalışma alanına erişimi olan herkes erişebilir.

  3. Dosyaları bırakma hedefine sürükleyin ya da yerel dosya dosyalarınızda dosyaları bulmak için, Araştır ' a tıklayın.

    Dosya ve hedef seçin

  4. Dosyaları karşıya yüklemeyi bitirdiğinizde İleri' ye tıklayın.

    CSV, TSV veya JSON dosyalarını karşıya yüklediyseniz Azure Databricks verileri bir veri çerçevesine yüklemeyi gösteren kod üretir.

    Dosyaları ve örnek kodu görüntüle

    Metni panonuza kaydetmek için Kopyala' ya tıklayın.

  5. Not defterine dönmek için bitti ' ye tıklayın.

Databricks CLI

DBFS komut satırı arabirimi (CLı) dBFS API 'sini kullanarak, dBFS için kullanımı kolay bir komut satırı arabirimi sunar. Bu istemciyi kullanarak, bir UNIX komut satırında kullanlarınızla benzer komutları kullanarak DBFS ile etkileşim kurabilirsiniz. Örnek:

# List files in DBFS
dbfs ls
# Put local file ./apple.txt to dbfs:/apple.txt
dbfs cp ./apple.txt dbfs:/apple.txt
# Get dbfs:/apple.txt and save to local file ./apple.txt
dbfs cp dbfs:/apple.txt ./apple.txt
# Recursively put local dir ./banana to dbfs:/banana
dbfs cp -r ./banana dbfs:/banana

DBFS komut satırı arabirimi hakkında daha fazla bilgi için bkz. Databricks CLI.

dbutils

dbutils. FS , dBFS 'de dosyalara erişmek için dosya sistemine benzer komutlar sağlar. Bu bölümde, komutları kullanarak DBFS 'den dosya yazma ve dosyaları okuma hakkında birkaç örnek bulunur dbutils.fs .

İpucu

DBFS Yardım menüsüne erişmek için dbutils.fs.help() komutunu kullanın.

Yerel bir dosya sistemi gibi dBFS köküne dosya yaz ve dosyaları oku

dbutils.fs.mkdirs("/foobar/")
dbutils.fs.put("/foobar/baz.txt", "Hello, World!")
dbutils.fs.head("/foobar/baz.txt")
dbutils.fs.rm("/foobar/baz.txt")

DBFS yoluna erişmek dbfs:/ için kullanın

display(dbutils.fs.ls("dbfs:/foobar"))

% FS Magic komutlarını kullan

Not defterleri %fs , dosya sistemi modülüne erişmek için bir toplu komut (Magic komutları) destekler dbutils . Çoğu dbutils.fs komut, %fs MAGIC komutları kullanılarak kullanılabilir.

# List the DBFS root

%fs ls

# Recursively remove the files under foobar

%fs rm -r foobar

# Overwrite the file "/mnt/my-file" with the string "Hello world!"

%fs put -f "/mnt/my-file" "Hello world!"

dBFS API 'si

bkz. dbfs apı ve büyük bir dosyayı dbfs 'de Upload.

Spark API 'Leri

Spark API 'Lerini kullanırken, veya ile dosyalara başvuruyoruz "/mnt/training/file.csv" "dbfs:/mnt/training/file.csv" . Aşağıdaki örnek dosyayı foo.text DBFS /tmp dizinine yazar.

df.write.text("/tmp/foo.txt")

Yerel dosya API 'leri

DBFS yollarını okumak ve yazmak için yerel dosya API 'Lerini kullanabilirsiniz. Azure Databricks, /dbfs küme düğümlerinde çalıştırılan işlemlere, yerel dosya API 'leriyle temel dağıtılmış depolama katmanını okuyup yazmak için BIR sigorta bağlamalarından oluşan her bir küme düğümünü yapılandırır. Yerel dosya API 'Lerini kullanırken yolunu sağlamanız gerekir /dbfs . Örnek:

Python

#write a file to DBFS using Python I/O APIs
with open("/dbfs/tmp/test_dbfs.txt", 'w') as f:
  f.write("Apache Spark is awesome!\n")
  f.write("End of example!")

# read the file
with open("/dbfs/tmp/test_dbfs.txt", "r") as f_read:
  for line in f_read:
    print(line)

Scala

import scala.io.Source

val filename = "/dbfs/tmp/test_dbfs.txt"
for (line <- Source.fromFile(filename).getLines()) {
  println(line)
}

Yerel dosya API 'si sınırlamaları

Aşağıda her bir SIGORTASı ve ilgili Databricks Runtime sürümleri için uygulanan yerel dosya API 'SI kullanımındaki sınırlamalar listelenmektedir.

  • Tümü: kimlik bilgisi geçişi desteklemez.

  • Sigortası v2 (Databricks Runtime 6. x ve 7. x için varsayılan)

    • Rastgele yazmaları desteklemez. Rastgele yazma gerektiren iş yükleri için, önce yerel diskte g/ç 'yi gerçekleştirin ve ardından sonucunu öğesine kopyalayın /dbfs . Örnek:

      # 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', '/dbfs/tmp/excel.xlsx')
      
    • Seyrek dosyaları desteklemez. Seyrek dosyaları kopyalamak için şunu kullanın cp --sparse=never :

      $ cp sparse.file /dbfs/sparse.file
      error writing '/dbfs/sparse.file': Operation not supported
      $ cp --sparse=never sparse.file /dbfs/sparse.file
      
  • Sigorta v1 (Databricks Runtime 5,5 LTS için varsayılan)

    Önemli

    5,5 LTS üzerinde SIGORTA v1 sorunlarıyla karşılaşırsanız <DBR> , Databricks bunun yerıne sigortası v2 kullanmanızı önerir. <DBR> Ortam değişkenini ayarlayarak 5,5 LTS 'de varsayılan sigorta sürümünü geçersiz kılabilirsiniz DBFS_FUSE_VERSION=2 .

    • Yalnızca boyutu 2 GB 'tan küçük dosyaları destekler. 2 GB 'tan büyük dosyaları okumak veya yazmak için yerel dosya g/ç API 'Lerini kullanırsanız bozuk dosyaları görebilirsiniz. Bunun yerine, dBFS CLI, dbutils. FSveya Spark API 'lerini kullanarak 2 GB 'den büyük dosyalara erişin veya /dbfs/ml derin öğrenme için yerel dosya API 'lerindeaçıklanan klasörü kullanın.

    • Yerel dosya g/ç API 'Lerini kullanarak bir dosya yazarsanız ve ardından dBFS CLI, dbutils. FSveya Spark API 'lerini kullanarak buna hemen erişmeyi denerseniz, bir FileNotFoundException , 0 boyutunda dosya veya eski dosya içeriği ile karşılaşabilirsiniz. Bu beklenen bir deyişle, işletim sistemi yazma işlemlerini varsayılan olarak önbelleğe alır. Bu yazmaları kalıcı depolamaya (büyük harfli DBFS) zorlamak için standart UNIX sistem çağrısı eşitlemesinikullanın. Örneğin:

      // scala
      import scala.sys.process._
      
      // Write a file using the local file API (over the FUSE mount).
      dbutils.fs.put("file:/dbfs/tmp/test", "test-contents")
      
      // Flush to persistent storage.
      "sync /dbfs/tmp/test" !
      
      // Read the file using "dbfs:/" instead of the FUSE mount.
      dbutils.fs.head("dbfs:/tmp/test")
      
Derin öğrenme için yerel dosya API 'leri

Yükleme, denetim noktası ve günlüğe kaydetme amacıyla DBFS erişimi gerektiren Dağıtılmış derin öğrenme uygulamalarıiçin Databricks Runtime 6,0 ve üzeri, /dbfs derin öğrenme iş yükleri için iyileştirilmiş yüksek performanslı bir bağlama sağlar.

Databricks Runtime 5,5 LTS 'de yalnızca /dbfs/ml iyileştirilmiştir. Bu sürümde, Databricks /dbfs/ml , ' ye eşleyen verilerin altına kaydedilmesini önerir dbfs:/ml .