Aracılığıyla paylaş


Delta tablosunu bırakma veya değiştirme

Azure Databricks, Unity Kataloğu veya Hive meta veri deposuna kayıtlı tabloları bırakmak ve değiştirmek için SQL standart DDL komutlarını destekler. Bu makalede, delta tablolarını bırakma ve değiştirme örnekleri ve yapılandırılan ortamınıza ve istediğiniz sonuca bağlı olarak söz dizimi önerileri sağlanır.

Tablo ne zaman bırakılır?

Tabloyu kalıcı olarak silmek istediğinizde ve aynı konumda yeni bir tablo oluşturmak istemediğinizde meta veri deposundan tablo kaldırmak için kullanmalısınız DROP TABLE . Örneğin:

DROP TABLE table_name

DROP TABLE tablonun türüne ve tablonun Unity Kataloğu'na mı yoksa eski Hive meta veri deposuna mı kayıtlı olduğuna bağlı olarak farklı semantiklere sahiptir.

Tablo türü Meta veri deposu Davranış
Yönetilen Unity Kataloğu Tablo meta veri deposundan kaldırılır ve temel alınan veriler silinmek üzere işaretlenir. Unity Kataloğu yönetilen tablolarındaki verileri 7 gün boyunca kullanabilirsiniz UNDROP .
Yönetilen Hive Tablo meta veri deposundan kaldırılır ve temel alınan veriler silinir.
Harici Unity Kataloğu Tablo meta veri deposundan kaldırılır, ancak temel alınan veriler kalır. URI erişim ayrıcalıkları artık verileri içeren dış konum tarafından yönetilir.
Harici Hive Tablo meta veri deposundan kaldırılır, ancak temel alınan veriler kalır. Tüm URI erişim ayrıcalıkları değiştirilmez.

DROP TABLE semantikler tablo türleri arasında farklılık gösterir ve Unity Kataloğu iç tablo kimliğini kullanarak Delta tablolarının geçmişini korur. Ancak tüm tablolar, işlem tamamlandıktan sonra daha önce kaydedilen tablo adının meta veri deposundaki verilere ve tablo geçmişine etkin bir bağlantısının kalmadığı ortak sonucu paylaşır.

Bkz. DROP TABLE.

Dekont

Databricks, üretim işlem hatları veya sistemleri için aynı adı kullanarak tabloyu bırakma ve yeniden oluşturma desenini önermez çünkü bu desen eşzamanlı işlemler için beklenmeyen sonuçlara neden olabilir. Bkz. Verileri eşzamanlı işlemlerle değiştirme.

Tablo ne zaman değiştirilir?

Databricks, yeni verilerle hedef tablonun üzerine tam olarak yazmak istediğiniz kullanım örnekleri için deyimleri kullanmanızı CREATE OR REPLACE TABLE önerir. Örneğin, Parquet dizinindeki tüm verilerle Delta tablosunun üzerine yazmak için aşağıdaki komutu çalıştırabilirsiniz:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

CREATE OR REPLACE TABLE kullanılan tablo türüne veya meta veri deposuna bakılmaksızın aynı semantiklere sahiptir. Aşağıdakiler, 'nin önemli avantajlarıdır CREATE OR REPLACE TABLE:

  • Tablo içeriği değiştirilir, ancak tablo kimliği korunur.
  • Tablo geçmişi korunur ve komutuyla RESTORE tabloyu önceki bir sürüme döndürebilirsiniz.
  • İşlem tek bir işlemdir, bu nedenle tablonun mevcut olmadığı hiçbir zaman yoktur.
  • Tablodan okunan eşzamanlı sorgular kesintisiz olarak devam edebilir. Değiştirmeden önceki ve sonraki sürüm tablo geçmişinde hala mevcut olduğundan, eşzamanlı sorgular tablonun her iki sürümüne de gerektiğinde başvurabilir.

Bkz. CREATE TABLE [USING].

Verileri eşzamanlı işlemlerle değiştirme

Eşzamanlı işlemlerde kullanılabilecek bir tablodaki verilerin tam değişimini gerçekleştirmek istediğinizde kullanmanız gerekir CREATE OR REPLACE TABLE.

Aşağıdaki anti-desen kullanılmamalıdır:

-- This is an anti-pattern. Avoid doing this!
DROP TABLE IF EXISTS table_name;

CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;

Bu önerinin nedenleri, yönetilen veya dış tabloları kullanıp kullanmadığınıza ve Unity Kataloğu kullanıp kullanmadığınıza bağlı olarak değişir, ancak bu düzeni kullanan tüm Delta tablo türlerinde hata, bırakılan kayıtlar veya bozuk sonuçlara neden olabilir.

Bunun yerine, Databricks aşağıdaki örnekte olduğu gibi her zaman kullanılmasını CREATE OR REPLACE TABLEönerir:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

Tablo geçmişi atomik veri değiştirme sırasında korunacağından, eşzamanlı işlemler başvurulan kaynak tablonun sürümünü doğrulayabilir ve bu nedenle beklenmeyen davranış veya sonuçlara neden olmadan gerektiğinde eşzamanlı işlemleri başarısız yapabilir veya uzlaştırabilir.