DBFS ve Unity Kataloğu için en iyi yöntemler

Önemli

Hem DBFS kök hem de DBFS bağlamaları kullanım dışıdır ve Databricks tarafından önerilmez. Yeni hesaplar, bu özelliklere erişim olmadan oluşturulur. Databricks bunun yerine Unity Kataloğu birimlerini, dış konumları veya çalışma alanı dosyalarını kullanmanızı önerir.

Unity Kataloğu, veri idaresine DBFS'den tamamen farklı yaklaşan bir dizi yeni yapılandırma ve kavram tanıtır. Bu makalede Unity Kataloğu dış konumları ve DBFS ile çalışmayla ilgili birkaç en iyi yöntem özetlenmiştir.

Databricks, Unity Kataloğu özellikli Azure Databricks çalışma alanlarında çoğu kullanım örneğinde DBFS ve bağlı bulut nesne depolamasının kullanılmamasını önerir. Bu makalede, bağlı bulut nesne depolaması kullanmanız gereken birkaç senaryo açıklanmaktadır. Burada depolanan dosyaları veya verileri Unity Kataloğu'na geçirmeniz gerekmediği sürece Databricks'in DBFS kökünü Unity Kataloğu ile birlikte kullanmanızı önermediğini unutmayın.

Unity Kataloğu etkin çalışma alanlarında DBFS nasıl kullanılır?

hive_metastore tablolarda gerçekleştirilen eylemler, DBFS tarafından yönetilen verileri ve depolama kimlik bilgilerini içerebilen eski veri erişim desenlerini kullanır. Çalışma alanı düzeyindeki hive_metastore yönetilen tablolar, DBFS kökünde depolanır.

DBFS ayrılmış erişim modunda (eski adıyla tek kullanıcı erişim modu) nasıl çalışır?

Ayrılmış erişim moduyla yapılandırılan işlem kaynakları, DBFS kökündeki tüm dosyalar ve bağlı veriler dahil olmak üzere DBFS'ye tam erişime sahiptir.

DBFS standart erişim modunda (eski adıyla paylaşılan erişim modu) nasıl çalışır?

Standart erişim modu, Unity Kataloğu veri idaresi ile Azure Databricks eski tablo ACL'lerini birleştirir. hive_metastore verilere erişim yalnızca açıkça izinleri olan kullanıcılar tarafından kullanılabilir.

Doğrudan DBFS kullanarak dosyalarla etkileşime geçmek için ANY FILE izinlerinizin verilmiş olması gerekir. ANY FILE kullanıcıların hive_metastore eski tablo ACL'lerini atlamasına ve DBFS tarafından yönetilen tüm verilere erişmesine izin verdiğinden, Databricks bu ayrıcalığı sağlarken dikkatli olunmasını önerir.

Unity Kataloğu'nun dış konumlarıyla DBFS'yi kullanmayın.

Unity Kataloğu, yönetilen nesne depolama dizinlerindeki izinleri tanımlamak için tam bulut URI yollarını kullanarak dış konumlardaki verilere erişimin güvenliğini sağlar. DBFS bağlamaları, Unity Kataloğu'nu tamamen atlayan tamamen farklı bir veri erişim modeli kullanır. Databricks, çalışma alanları veya hesaplar arasında veri paylaşırken de dahil olmak üzere DBFS bağlamaları ve UC dış birimleri arasında bulut nesnesi depolama birimlerini yeniden kullanmamanızı önerir.

Unity Kataloğu tarafından yönetilen depolama alanınızın güvenliğini sağlama

Yönetilen tablolar ve birimler için veri dosyalarını depolamak için yönetilen depolama konumlarını kullanan Unity Kataloğu.

Databricks yönetilen depolama konumları için aşağıdakileri önerir:

  • Yeni depolama hesaplarını veya kovaları kullanın.
  • Unity Kataloğu için özel bir kimlik ilkesi tanımlayın.
  • Unity Kataloğu tarafından yönetilen Azure Databricks'e tüm erişimi kısıtlayın.
  • Unity Kataloğu için oluşturulan kimlik erişim ilkelerine tüm erişimi kısıtlayın.

Var olan verileri dış konumlara ekleme

Dış konumları kullanarak mevcut depolama hesaplarını Unity Kataloğu'na yüklemek mümkündür. En yüksek güvenlik için Databricks, diğer tüm depolama kimlik bilgilerini ve erişim düzenlerini iptal ettikten sonra yalnızca depolama hesaplarının dış konumlara yüklenmesini önerir.

Unity Kataloğu'nda dış konum olarak DBFS kökü olarak kullanılan bir depolama hesabını asla yüklememelisiniz.

"Unity Kataloğu" dosya sistemi erişiminde küme yapılandırmaları yoksayılır.

Unity Kataloğu, dosya sistemi ayarları için küme yapılandırmalarına uygun değildir. Bu, Unity Kataloğu'nu kullanarak verilere erişirken bulut nesne depolamasıyla özel davranış yapılandırmaya yönelik Hadoop dosya sistemi ayarlarının çalışmadığı anlamına gelir.

Birden çok yol erişimiyle ilgili sınırlama

Genel olarak Unity Kataloğu ve DBFS'yi birlikte kullanabilirsiniz, ancak farklı erişim yöntemleriyle aynı komutta veya not defteri hücresindeki eşit olan veya bir üst/alt ilişki paylaşan yollara referans verilemez.

Örneğin, foo konumundaki hive_metastore içinde tanımlanan dış tablo a/b/c varsa ve a/b/'te Unity Kataloğu'nda bir dış konum tanımlanmışsa, aşağıdaki kod bir hata üretir.

spark.read.table("foo").filter("id IS NOT NULL").write.mode("overwrite").save("a/b/c")

Bu mantık iki hücreye ayrılırsa bu hata oluşmaz:

df = spark.read.table("foo").filter("id IS NOT NULL")
df.write.mode("overwrite").save("a/b/c")