Azure Databricks verileri nereye yazar?
Bu makalede Azure Databricks'in günlük işlemler ve yapılandırmalarla veri yazdığı konumlar ayrıntılı olarak anlatlanmaktadır. Azure Databricks'te birçok teknolojiye yayılan ve paylaşılan sorumluluk modelinde bulut kaynaklarıyla etkileşim kuran bir araç paketi olduğundan, verileri depolamak için kullanılan varsayılan konumlar yürütme ortamına, yapılandırmalara ve kitaplıklara göre farklılık gösterir.
Bu makaledeki bilgiler, çeşitli işlemler için varsayılan yolları ve yapılandırmaların bu varsayılanları nasıl değiştirebileceğini anlamanıza yardımcı olmak içindir. Verilere erişimi yapılandırma ve denetleme konusunda rehberlik arayan veri yöneticileri ve yöneticiler Unity Kataloğu ile Veri Yönetişimigörmelidir.
Nesne depolamayı ve diğer veri kaynaklarını yapılandırma hakkında bilgi edinmek için bkz . Veri kaynaklarına bağlanma.
Nesne depolama nedir?
Bulut bilişimde nesne depolama veya blob depolama, verileri nesne olarak tutan depolama kapsayıcılarını ifade eder ve her nesne veri, meta veri ve genel olarak benzersiz bir kaynak tanımlayıcısı (URI) içerir. Nesne depolama veri işleme işlemleri genellikle REST API arabirimi aracılığıyla oluşturma, okuma, güncelleştirme ve silme (CRUD) ile sınırlıdır. Bazı nesne depolama teklifleri sürüm oluşturma ve yaşam döngüsü yönetimi gibi özellikleri içerir. Nesne depolamanın aşağıdaki avantajları vardır:
- Yüksek kullanılabilirlik, dayanıklılık ve güvenilirlik.
- Diğer depolama seçeneklerinin çoğuna kıyasla daha düşük depolama maliyeti.
- Sonsuz ölçeklenebilir (belirli bir bulut bölgesinde kullanılabilir toplam depolama alanı miktarıyla sınırlıdır).
Bulut tabanlı veri göllerinin çoğu, bulut nesne depolama alanında açık kaynak veri biçimlerinin üzerine kurulmuştur.
Azure Databricks nesne depolamayı nasıl kullanır?
Nesne depolama, Azure Databricks tarafından çoğu işlem için kullanılan ana depolama biçimidir. Unity Kataloğu depolama kimlik bilgilerini ve dış konumları kullanarak bulut nesne depolamasına erişimi yapılandırabilirsiniz. Bu konumlar daha sonra tabloları ve birimleri yedekleyerek veri dosyalarını depolamak için kullanılır. Bkz. Unity Kataloğu kullanarak bulut nesne depolaması ve hizmetlerine bağlanma.
Bir tabloyu dış veri sistemine göre özel olarak yapılandırmadığınız sürece, Azure Databricks'te oluşturulan tüm tablolar verileri bulut nesne depolama alanında depolar.
Bulut nesne depolama alanında depolanan Delta Lake dosyaları, Databricks lakehouse için veri temelini sağlar.
Blok depolama nedir?
Bulut bilişimde blok depolama veya disk depolama, "sabit sürücüler" olarak da bilinen geleneksel sabit disk sürücülerine (HDD) veya katı hal sürücülerine (SSD) karşılık gelen depolama birimlerini ifade eder. Blok depolamayı bulut bilişim ortamında dağıtırken genellikle bir veya daha fazla fiziksel sürücüden oluşan mantıksal bölüm dağıtılır. Uygulamalar, ürün teklifleri ile bulut satıcıları arasında biraz farklılık gösterir, ancak genellikle uygulamalar arasında aşağıdaki özellikler bulunur:
- Tüm sanal makineler (VM'ler) ekli bir blok depolama birimi gerektirir.
- Blok depolama birimine yüklenen dosyalar ve programlar, blok depolama birimi kalıcı olduğu sürece devam eder.
- Blok depolama birimleri genellikle geçici veri depolama için kullanılır.
- VM'lere eklenen blok depolama birimleri genellikle VM'lerle birlikte silinir.
Azure Databricks blok depolamayı nasıl kullanır?
İşlem kaynaklarını açtığınızda Azure Databricks VM'leri yapılandırıp dağıtır ve blok depolama birimleri ekler. Bu blok depolama, işlem kaynağının ömrü boyunca kısa ömürlü veri dosyalarını depolamak için kullanılır. Bu dosyalar işletim sistemini, yüklü kitaplıkları ve disk önbelleği tarafından kullanılan verileri içerir. Apache Spark verimli paralelleştirme ve veri yükleme için arka planda blok depolamayı kullansa da Azure Databricks'te çalıştırılacak çoğu kod depolamayı engellemek için verileri doğrudan kaydetmez veya yüklemez.
Sürücü düğümünüze bağlı blok depolamayı kullanan Python veya Bash komutları gibi rastgele kod çalıştırabilirsiniz. Bkz Sürücü düğümüne bağlı geçici depolamadaki dosyalarla çalışma.
Unity Kataloğu veri dosyalarını nerede depolar?
Unity Kataloğu, bulut depolama alanı ile ilişkisel nesneler arasındaki ilişkileri yapılandırmak için yöneticilere dayanır. Verilerin bulunduğu tam konum, yöneticilerin ilişkileri nasıl yapılandırdığına bağlıdır.
Unity Kataloğu tarafından yönetilen nesnelere yazılan veya yüklenen veriler aşağıdaki konumlardan birinde depolanır:
- Meta veri deposu, katalog veya şemayla ilişkili yönetilen depolama konumu. Yönetilen tablolara ve yönetilen birimlere yazılan veya yüklenen veriler yönetilen depolamayı kullanır. Unity Kataloğu'nda yönetilen bir depolama konumu belirtme hakkında bilgi için bkz. ....
- Depolama kimlik bilgileriyle tanımlı harici bir konum. Dış tablolara ve dış birimlere yazılan veya yüklenen veriler dış depolamayı kullanır. Bkz. Unity Kataloğu kullanarak bulut nesne depolaması ve hizmetlerine bağlanma.
Databricks SQL veri yedekleme tablolarını nerede depolar?
Unity Kataloğu ile yapılandırılmış Databricks SQL ile bir CREATE TABLE
deyimi çalıştırdığınızda, varsayılan davranış, veri dosyalarını Unity Kataloğu ile yapılandırılmış yönetilen bir depolama konumunda depolamaktır. Bkz. Unity Kataloğu veri dosyalarını nerede depolar?.
Eski hive_metastore
kataloğu farklı kurallara uyar. Bkz. Unity Kataloğu ve eski Hive meta veri deposu ile nasıl çalışılır.
DLT veri dosyalarını nerede depolar?
Databricks, DLT işlem hatları oluştururken Unity Kataloğu'nu kullanmanızı önerir. Veriler, hedef şemayla ilişkili yönetilen depolama konumundaki dizinlerde depolanır.
İsteğe bağlı olarak Hive meta veri deposu kullanarak DLT işlem hatlarını yapılandırabilirsiniz. Hive meta veri deposu ile yapılandırıldığında, DBFS veya bulut nesne depolama alanında bir depolama konumu belirtebilirsiniz. Konum belirtmezseniz, işlem hattınıza DBFS kökünde bir konum atanır.
Apache Spark veri dosyalarını nereye yazar?
Databricks, verileri okumak ve yazmak için Unity Kataloğu ile nesne adlarının kullanılmasını önerir. Şu deseni kullanarak Unity Kataloğu birimlerine de dosya yazabilirsiniz: /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
. Unity Kataloğu tarafından yönetilen nesnelere veri yüklemek, oluşturmak, güncelleştirmek veya eklemek için yeterli ayrıcalıklara sahip olmanız gerekir.
İsteğe bağlı olarak, veri dosyalarının yollarını belirtmek için evrensel kaynak göstergelerini (URI) kullanabilirsiniz. URI'ler bulut sağlayıcısına bağlı olarak değişir. Ayrıca, geçerli işlem kaynağınızın bulut nesne depolama alanına yazabilmesi için yapılandırılmış yazma izinlerine sahip olmanız gerekir.
Azure Databricks, Apache Spark okuma ve yazma komutlarını bulut nesne depolamasına geri eşlemek için Databricks Dosya Sistemi'ni kullanır. Her Azure Databricks çalışma alanı, çalışma alanı için ayrılan bulut hesabında yapılandırılmış bir DBFS kök depolama konumuna sahiptir ve bu konuma tüm kullanıcılar veri okumak ve yazmak için erişebilir. Databricks, üretim verilerini depolamak için DBFS kökünü kullanmanızı önermez. Bkz . DBFS nedir? ve DBFS köküyle çalışmaya yönelik öneriler.
Pandas, Azure Databricks'te veri dosyalarını nereye yazar?
Databricks Runtime 14.0 ve üzerinde, tüm yerel Python okuma ve yazma işlemleri için varsayılan geçerli çalışma dizini (CWD), not defterini içeren dizindir. Veri dosyasını kaydederken yalnızca bir dosya adı sağlarsanız, pandas bu veri dosyasını o anda çalışan not defterinize paralel bir çalışma alanı dosyası olarak kaydeder.
Tüm Databricks Runtime sürümleri çalışma alanı dosyalarını desteklemez ve bazı Databricks Runtime sürümleri, not defterleri veya Git klasörleri kullanmanıza bağlı olarak farklı davranışlara sahiptir. Bkz. Varsayılan geçerli çalışma dizini nedir?.
Azure Databricks'te geçici dosyaları nereye yazmam gerekir?
Küme kapatıldıktan sonra saklamak istemediğiniz geçici dosyaları yazmanız gerekiyorsa, geçici dosyaları $TEMPDIR
yazarak CWD çalışma alanı dosya sistemindeyse geçerli çalışma dizinine (CWD) yazmaktan daha iyi bir performans elde edersiniz. Kod bir Depoda çalışıyorsa dal boyutu sınırlarını aşmaktan da kaçınabilirsiniz. Daha fazla bilgi için bkz . Dosya ve depo sınırları.
Veri miktarı büyükse ve depolamanın otomatik ölçeklenmesini istiyorsanız /local_disk0
'ya yazın.