Birimler oluşturma ve birimlerle çalışma

Bu makalede, tablosal olmayan veri kümeleri üzerinde idareyi etkinleştiren Unity Kataloğu nesneleri olan birimler tanıtılır. Ayrıca birimlerin nasıl oluşturulacağını, yönetileceğini ve birimlerle nasıl çalışacağını da açıklar.

Birimlerdeki dosyaları karşıya yükleme ve yönetme hakkında ayrıntılı bilgi için bkz . Unity Kataloğu birimine dosya yükleme ve Unity Kataloğu birimleri için dosya yönetimi işlemleri.

Not

Birimlerle çalışırken, Katalog Gezgini gibi Azure Databricks URI'lerini kullanmıyorsanız, SQL ambarı veya Databricks Runtime 13.3 LTS veya üzerini çalıştıran bir küme kullanmanız gerekir.

Unity Kataloğu birimleri nedir?

Birimler, bulut nesne depolama konumundaki mantıksal depolama birimini temsil eden Unity Kataloğu nesneleridir. Birimler dosyalara erişme, dosyaları depolama, yönetme ve düzenleme özellikleri sağlar. Tablolar tablosal veri kümeleri üzerinde idare sağlarken, birimler tablosal olmayan veri kümeleri üzerinde idare ekler. Dosyaları yapılandırılmış, yarı yapılandırılmış ve yapılandırılmamış veriler dahil olmak üzere herhangi bir biçimde depolamak ve bunlara erişmek için birimleri kullanabilirsiniz.

Önemli

Birimleri tablolar için konum olarak kullanamazsınız. Birimler yalnızca yol tabanlı veri erişimine yöneliktir. Unity Kataloğu ile tablo verilerini depolamak için tabloları kullanın.

Yönetilen birim nedir?

Yönetilen birim, içeren şemanın varsayılan depolama konumu içinde oluşturulan Unity Kataloğu tarafından yönetilen bir depolama birimidir. Yönetilen birimler, dış konumlar ve depolama kimlik bilgileri ek yükü olmadan dosyalarla çalışmak için yönetilen depolama oluşturulmasına olanak sağlar. Yönetilen birim oluştururken konum belirtmeniz gerekmez ve yönetilen birimlerdeki veriler için tüm dosya erişimi Unity Kataloğu tarafından yönetilen yollardan geçer. Bkz. Birimdeki dosyalara erişmek için hangi yol kullanılır?

Yönetilen bir birimi sildiğinizde, bu birimde depolanan dosyalar da 30 gün içinde bulut kiracınızdan silinir.

Dış birim nedir?

Dış birim , Unity Kataloğu tarafından yönetilen depolama kimlik bilgileri kullanılarak dış konumdaki bir dizine kayıtlı Unity Kataloğu tarafından yönetilen depolama birimidir. Dış birimler, Unity Kataloğu veri idaresini mevcut bulut nesne depolama dizinlerine eklemenize olanak tanır. Dış birimler için bazı kullanım örnekleri şunlardır:

  • Geçiş olmadan veri dosyalarına idare ekleme.
  • Azure Databricks tarafından alınması veya erişilmesi gereken diğer sistemler tarafından üretilen dosyaları yönetme.
  • Azure Databricks tarafından üretilen ve diğer sistemler tarafından doğrudan bulut nesne depolama alanından erişilmesi gereken verileri idare etme.

Dış birimler , Unity Kataloğu depolama kimlik bilgileri tarafından yönetilen dış konumlardaki dizinler olmalıdır . Unity Kataloğu, dış birimlerdeki dosyaların yaşam döngüsünü veya düzenini yönetmez. Bir dış birimi bıraktığınızda Unity Kataloğu temel alınan verileri silmez.

Not

Bir birim tanımladığınızda, birim yolu altındaki verilere bulut URI erişimi birimin izinleri tarafından yönetilir.

Birimdeki dosyalara erişmek için hangi yol kullanılır?

Apache Spark, SQL, Python veya diğer diller ve kitaplıklar kullansanız da birimlere erişim yolu aynıdır. Bu, Azure Databricks çalışma alanına bağlı nesne depolamadaki dosyalar için eski erişim desenlerinden farklıdır.

Birimlerdeki dosyalara erişim yolu aşağıdaki biçimi kullanır:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Azure Databricks, Apache Spark ile çalışırken isteğe bağlı dbfs:/ bir düzeni de desteklediğinden aşağıdaki yol da çalışır:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Yoldaki sıra /<catalog>/<schema>/<volume> , dosyayla ilişkilendirilmiş üç Unity Kataloğu nesne adıyla ilişkilidir. Bu yol öğeleri salt okunurdur ve kullanıcılar tarafından doğrudan yazılamaz, yani dosya sistemi işlemlerini kullanarak bu dizinleri oluşturmak veya silmek mümkün değildir. Bunlar otomatik olarak yönetilir ve ilgili UC varlıklarıyla eşitlenmiş olarak tutulur.

Not

Bulut depolama URI'lerini kullanarak dış birimlerdeki verilere de erişebilirsiniz.

Birimler için ayrıcalıklar nelerdir?

Birimler, tablolarla aynı temel ayrıcalık modelini kullanır, ancak tablolar için ayrıcalıkların bir tablodaki satırları sorgulamaya ve düzenlemeye erişim verme üzerinde odaklandığı durumlarda, birimler için ayrıcalıklar dosyalarla çalışmaya odaklanır. Bu nedenle birimler aşağıdaki ayrıcalıkları tanıtır:

Bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler.

Birim ayrıcalıklarını kimler yönetebilir?

Birim ayrıcalıklarını yönetmek veya birimleri bırakmak için bir birimde sahip ayrıcalıklarına sahip olmanız gerekir. Unity Kataloğu'ndaki her nesneye sahip olarak yalnızca bir sorumlu atanabilir ve sahiplik art arda eklenmese de (başka bir ifadeyle, kataloğun sahibi otomatik olarak bu katalogdaki tüm nesnelerin sahibi olmaz), sahiplikle ilişkili ayrıcalıklar bir nesnenin içindeki tüm nesnelere uygulanır.

Bu, Unity Kataloğu birimleri için aşağıdaki sorumluların birim ayrıcalıklarını yönetebileceği anlamına gelir:

  • Üst kataloğun sahibi.
  • Üst şemanın sahibi.
  • Birimin sahibi.

Her nesnenin yalnızca tek bir sahibi olabilir ancak Databricks, çoğu nesnenin sahipliğini tek bir kullanıcı yerine bir gruba atamanızı önerir. Herhangi bir nesnenin ilk sahipliği, bu nesneyi oluşturan kullanıcıya atanır. Bkz . Unity Kataloğu nesne sahipliğini yönetme.

Yönetilen birim oluşturma

Yönetilen birim oluşturmak için aşağıdaki izinlere sahip olmanız gerekir:

Kaynak Gerekli izinler
Şema USE SCHEMA, CREATE VOLUME
Katalog USE CATALOG

Sql

Yönetilen birim oluşturmak için aşağıdaki söz dizimini kullanın:

CREATE VOLUME <catalog>.<schema>.<volume-name>;

Katalog gezgini

Katalog Gezgini'nde yönetilen birim oluşturmak için:

  1. Azure Databricks çalışma alanınızda Katalog'a tıklayınKatalog simgesi.
  2. Birimi eklemek istediğiniz şemayı arayın veya bu şemaya göz atın ve seçin.
  3. Ses Düzeyi Oluştur düğmesine tıklayın. (Yeterli ayrıcalıklara sahip olmanız gerekir.)
  4. Birim için bir ad girin.
  5. Açıklama sağlayın (isteğe bağlı).
  6. Oluştur’a tıklayın.

Dış birim oluşturma

Dış birim oluşturmak için aşağıdaki izinlere sahip olmanız gerekir:

Kaynak Gerekli izinler
Dış konum CREATE EXTERNAL VOLUME
Şema USE SCHEMA, CREATE VOLUME
Katalog USE CATALOG

Sql

Dış birim oluşturmak için aşağıdaki söz dizimini kullanarak dış konumda bir yol belirtin:

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

Katalog gezgini

Katalog Gezgini'nde dış birim oluşturmak için:

  1. Azure Databricks çalışma alanınızda Katalog'a tıklayınKatalog simgesi.
  2. Birimi eklemek istediğiniz şemayı arayın veya bu şemaya göz atın ve seçin.
  3. Ses Düzeyi Oluştur düğmesine tıklayın. (Yeterli ayrıcalıklara sahip olmanız gerekir.)
  4. Birim için bir ad girin.
  5. Birimin oluşturulacağı dış konumu seçin.
  6. Yolu, birimi oluşturmak istediğiniz alt dizini yansıtacak şekilde düzenleyin.
  7. Açıklama sağlayın (isteğe bağlı).
  8. Oluştur’a tıklayın.

Birimi bırakma

Yalnızca sahip ayrıcalıklarına sahip kullanıcılar bir birimi bırakabilir. Bkz. Birim ayrıcalıklarını kimler yönetebilir?.

Birimi bırakmak için aşağıdaki söz dizimini kullanın:

DROP VOLUME IF EXISTS <volume-name>;

Yönetilen bir birimi bıraktığınızda, Azure Databricks temel alınan verileri 30 gün içinde siler. Bir dış birimi bıraktığınızda birimi Unity Kataloğu'ndan kaldırırsınız, ancak temel alınan veriler dış konumda değişmeden kalır.

Birimdeki dosyaları okuma

Bir birimin içeriğini görüntülemek veya birimlerde depolanan dosyalara erişmek için aşağıdaki izinlere sahip olmanız gerekir:

Kaynak Gerekli izinler
Hacim READ
Şema USE SCHEMA
Katalog USE CATALOG

Yolları kullanarak birimlerin içeriğiyle etkileşim kurarsınız. Bkz. Birimdeki dosyalara erişmek için hangi yol kullanılır?

Bir birimde diğer dosya yönetimi işlemlerini oluşturma, silme ve gerçekleştirme

Birimlerde depolanan dosyalarda dosya yönetimi işlemleri gerçekleştirmek için aşağıdaki izinlere sahip olmanız gerekir:

Kaynak Gerekli izinler
Hacim READ, WRITE
Şema USE SCHEMA
Katalog USE CATALOG

Birimlerde dosya yönetimi işlemlerini aşağıdaki araçlarla gerçekleştirebilirsiniz:

  • Katalog Gezgini, dosya yönetimi görevleri için birçok kullanıcı arabirimi seçeneği sağlar. Bkz . Katalog Gezgini nedir?.
  • Databricks yardımcı programları fs komutları. Bkz. Dosya sistemi yardımcı programı (dbutils.fs).
  • %fs magic komutu ile aynı işlevselliği dbutils.fssağlar.
  • Dosyaları birim kullanıcı arabirimine yükleyin. Bkz . Unity Kataloğu birimine dosya yükleme.
  • gibi os.listdir()açık kaynak komutları.
  • Bazı bash komutları desteklenir. %sh cp desteklenir ancak %sh mv desteklenmez.

Birimlerdeki dosyalarla program aracılığıyla etkileşim kurma hakkında tüm ayrıntılar için bkz . Unity Kataloğu birimlerindeki dosyalarla çalışma.

Örnek not defteri: Birimler oluşturma ve birimlerle çalışma

Aşağıdaki not defteri Unity Kataloğu birimleri oluşturmak ve bu birimlerle etkileşim kurmak için temel SQL söz dizimini gösterir.

Öğretici: Unity Kataloğu birimleri not defteri

Not defterini alma

Birimler için ayrılmış yollar

Birimler, birimlere erişmek için kullanılan aşağıdaki ayrılmış yolları tanıtır:

  • dbfs:/Volumes
  • /Volumes

Not

Yollar, Apache Spark API'lerinden ve dbutils/volume/volumes/Volume, gibi bu yollara yönelik olası yazım hataları için de ayrılmıştır. Bunların başında dbfs:/bulunup bulunmadığına bakılmaksızın. Yol /dbfs/Volumes da ayrılmıştır, ancak birimlere erişmek için kullanılamaz.

Birimler yalnızca Databricks Runtime 13.3 LTS ve üzerinde desteklenir. Databricks Runtime 12.2 LTS ve altında yollara yönelik /Volumes işlemler başarılı olabilir, ancak verileri Unity Kataloğu birimlerinde beklendiği gibi kalıcı hale getirmek yerine işlem kümelerine bağlı kısa süreli depolama disklerine veri yazabilir.

Önemli

DBFS kökünde ayrılmış bir yolda depolanan önceden var olan verileriniz varsa, bu verilere başka bir konuma taşımak üzere geçici erişim elde etmek için bir destek bileti oluşturabilirsiniz.

Sınırlamalar

Unity Kataloğu birimleriyle etkileşime geçmek için Unity Kataloğu özellikli işlem kullanmanız gerekir. Birimler tüm iş yüklerini desteklemez.

Not

Birimler yürütücülere dağıtılan komutları desteklemez dbutils.fs .

Aşağıdaki sınırlamalar geçerlidir:

Databricks Runtime 14.3 LTS ve üzerinde:

  • Tek kullanıcılı kullanıcı kümelerinde, Scala'daki iş parçacıklarından ve alt işlemlerden birimlere erişemezsiniz.

Databricks Runtime 14.2 ve altında:

  • Paylaşılan erişim moduyla yapılandırılmış işlemde, birimlere erişmek için UDF'leri kullanamazsınız.
    • Hem Python hem de Scala, sürücüden FUSE erişimine sahiptir ancak yürütücülerden erişmeyebilir.
    • G/Ç işlemlerini gerçekleştiren Scala kodu sürücüde çalıştırılabilir ancak yürütücüler üzerinde çalıştırılmaz.
  • Tek kullanıcı erişim moduyla yapılandırılan işlemde Scala'da FUSE, birim yollarını kullanarak verilere erişen Scala GÇ kodu veya Scala UDF'leri desteklenmez. Python UDF'leri tek kullanıcı erişim modunda desteklenir.

Desteklenen tüm Databricks Runtime sürümlerinde:

  • Unity Kataloğu UDF'leri birim dosya yollarına erişimi desteklemez.

  • RDD'lerden birimlere erişemezsiniz.

  • Spark-submit'i bir birimde depolanan JAR'lerle kullanamazsınız.

  • Tekerlek veya JAR dosyasının içindeki birim yolları aracılığıyla erişilen diğer kitaplıklara bağımlılık tanımlayamazsınız.

  • veya /Volumes/<catalog-name>/<schema-name> desenlerini kullanarak /Volumes/<catalog-name> Unity Kataloğu nesnelerini listeleyemezsiniz. Birim adı içeren tam nitelikli bir yol kullanmanız gerekir.

  • REST API için DBFS uç noktası birim yollarını desteklemez.

  • Birimler Azure Databricks çalışma alanında genel arama sonuçlarının dışında tutulur.

  • Birimleri küme günlüğü teslimi için hedef olarak belirtemezsiniz.

  • %sh mv dosyaları birimler arasında taşımak için desteklenmez. Bunun yerine veya %sh cp kullanındbutils.fs.mv.

  • Birimlerle özel bir Hadoop dosya sistemi oluşturamazsınız; bu da aşağıdakilerin desteklenmediği anlamına gelir:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Birimler, FedRAMP uyumluluğuna sahip Azure Kamu bölgelerde veya çalışma alanlarında kullanılamaz.

  • Yol biçimini Azure Data Factory kitaplık yapılandırma panelinde bir dbfs:/ düzen ile kullanmanız gerekir. Örneğin, dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.