Aracılığıyla paylaş


Delta Live Tables veri hatlarınızla Unity Kataloğu'nu kullanma

Önemli

Unity Kataloğu için Delta Live Tables desteği Genel Önizleme aşamasındadır.

Tabloları Hive meta veri deposunda kalıcı hale getirmek için mevcut desteğe ek olarak, Delta Live Tables işlem hatlarınızla Unity Kataloğu'nu kullanarak şunları yapabilirsiniz:

  • Unity Kataloğu'nda işlem hattınızın tabloları kalıcı hale gelecek bir katalog tanımlayın.
  • Unity Kataloğu tablolarındaki verileri okuma.

Çalışma alanınız Unity Kataloğu veya Hive meta veri deposu kullanan işlem hatları içerebilir. Ancak tek bir işlem hattı hem Hive meta veri deposuna hem de Unity Kataloğu'na yazamaz ve mevcut işlem hatları Unity Kataloğu'nu kullanacak şekilde yükseltilemez. Unity Kataloğu kullanmayan mevcut işlem hatlarınız bu önizlemeden etkilenmez ve yapılandırılan depolama konumunu kullanarak verileri Hive meta deposuna kalıcı hale almaya devam eder.

Bu belgede aksi belirtilmedikçe, Unity Kataloğu'nu kullanan işlem hatlarında tüm mevcut veri kaynakları ve Delta Live Tables işlevleri desteklenir. Hem Python hem de SQL arabirimleri Unity Kataloğu kullanan işlem hatlarıyla desteklenir.

İşlem hattınızda oluşturulan tablolar, Databricks Runtime 13.3 LTS ve üzeri ya da SQL ambarı kullanılarak paylaşılan Unity Kataloğu kümelerinden de sorgulanabilir. Tablolar atanan kümelerden sorgulanamaz veya yalıtım kümelerinden sorgulanamaz.

Unity Kataloğu işlem hattı tarafından oluşturulan tablolardaki izinleri yönetmek için GRANT ve REVOKE kullanın.

Gereksinimler

Delta Live Tables işlem hattından Unity Kataloğu'nda tablolar oluşturmak için aşağıdakiler gereklidir:

  • Hedef katalogda ayrıcalıklarınız olmalıdır USE CATALOG .
  • İşlem hattınız gerçekleştirilmiş görünümler oluşturuyorsa hedef şemada ve USE SCHEMA ayrıcalıklarınız olmalıdırCREATE MATERIALIZED VIEW.
  • İşlem hattınız akış tabloları oluşturuyorsa hedef şemada ve USE SCHEMA ayrıcalıklarınız olmalıdırCREATE TABLE.
  • İşlem hattı ayarlarında bir hedef şema belirtilmezse, hedef katalogdaki en az bir şemada veya CREATE TABLE ayrıcalıklarına sahip CREATE MATERIALIZED VIEW olmanız gerekir.

Sınırlama

Delta Live Tablolarıyla Unity Kataloğu'nu kullanırken sınırlamalar şunlardır:

  • Varsayılan olarak, yalnızca işlem hattı sahibi ve çalışma alanı yöneticileri Unity Kataloğu etkin işlem hattını çalıştıran kümeden sürücü günlüklerini görüntüleme iznine sahiptir. Diğer kullanıcıların sürücü günlüklerini görüntülemesine yönelik erişimi etkinleştirmek için bkz . Yönetici olmayan kullanıcıların Unity Kataloğu etkin işlem hattından sürücü günlüklerini görüntülemesine izin verme.

  • Hive meta veri deposu kullanan mevcut işlem hatları Unity Kataloğu'nu kullanacak şekilde yükseltilemez. Hive meta veri deposuna yazan mevcut bir işlem hattını geçirmek için yeni bir işlem hattı oluşturmanız ve veri kaynaklarından verileri yeniden almalısınız.

  • Unity Kataloğu genel önizlemesi sırasında oluşturulan bir meta veri deposuna bağlı bir çalışma alanında Unity Kataloğu etkin işlem hattı oluşturamazsınız. Bkz . Ayrıcalık devralmaya yükseltme.

  • JAR'ler desteklenmez. Üçüncü taraf kitaplıklarının yüklenmesi yalnızca Python kitaplıkları için desteklenir. Bkz . Delta Live Tables işlem hatları için Python bağımlılıklarını yönetme.

  • Akış tablosunun şemasını değiştiren veri işleme dili (DML) sorguları desteklenmez.

  • Delta Live Tables işlem hattında oluşturulan gerçekleştirilmiş görünüm, başka bir işlem hattında veya aşağı akış not defterinde bu işlem hattının dışında bir akış kaynağı olarak kullanılamaz.

  • Yönetilen depolama konumu belirten şemalarda yayımlama yalnızca önizleme kanalında desteklenir.

  • bir işlem hattı yönetilen depolama konumuna sahip bir şemada yayımlanırsa, şema sonraki bir güncelleştirmede değiştirilebilir, ancak yalnızca güncelleştirilmiş şema daha önce belirtilen şemayla aynı depolama konumunu kullanıyorsa değiştirilebilir.

  • Hedef şema bir depolama konumu belirtiyorsa, tüm tablolar orada depolanır. Şema depolama konumu belirtilmezse, hedef katalog bir tane belirtiyorsa tablolar katalog depolama konumunda depolanır. Şema ve katalog depolama konumları belirtilmezse tablolar, tabloların yayımlandığı meta veri deposunun kök depolama konumunda depolanır.

  • Katalog Gezgini'ndeki Geçmiş sekmesinde akış tabloları ve gerçekleştirilmiş görünümler için geçmiş gösterilmez.

  • LOCATION Bir tablo tanımlanırken özelliği desteklenmez.

  • Unity Kataloğu etkin işlem hatları Hive meta veri deposunda yayımlanamaz.

  • Python UDF desteği Genel Önizleme aşamasındadır. Python UDF'lerini kullanmak için işlem hattınızın önizleme kanalını kullanması gerekir.

  • Delta Paylaşımı'nı Unity Kataloğu'nda yayımlanan Delta Live Tables gerçekleştirilmiş görünümü veya akış tablosuyla kullanamazsınız.

  • Birden çok işlem hattının event_log olay günlüklerine erişmek için bir işlem hattında veya sorguda tablo değerli işlevini kullanamazsınız.

  • Tablo değerli işlevi üzerinde event_log oluşturulan bir görünümü diğer kullanıcılarla paylaşamazsınız.

  • Tek düğümlü kümeler Unity Kataloğu etkin işlem hatlarıyla desteklenmez. Delta Live Tables daha küçük işlem hatlarını çalıştırmak için tek düğümlü bir küme oluşturabileceğinden işlem hattınız başvuruda single-node modebulunan bir hata iletisiyle başarısız olabilir. Bu durumda işlem ayarlarınızı yapılandırırken en az bir çalışan belirttiğinizden emin olun.

  • Unity Kataloğu etkinleştirilmiş bir işlem hattında oluşturulan tablolar, atanan veya hiç yalıtım kümesinden sorgulanamaz. Delta Live Tables işlem hattı tarafından oluşturulan tabloları sorgulamak için Databricks Runtime 13.3 LTS ve üzerini veya SQL ambarı kullanarak paylaşılan erişim modu kümesi kullanmanız gerekir.

  • Delta Live Tables, Unity Kataloğu özellikli bir işlem hattını çalıştırmak için paylaşılan erişim modu kümesi kullanır. Unity Kataloğu etkinleştirilmiş işlem hattı, atanan bir kümede çalıştırılamaz. Unity Kataloğu ile paylaşılan erişim modunun sınırlamaları hakkında bilgi edinmek için bkz . Unity Kataloğu'nda paylaşılan erişim modu sınırlamaları.

  • Unity Kataloğu'nda yayımlanan gerçekleştirilmiş görünümlere veya akış tablolarına sahip satır filtrelerini veya sütun maskelerini kullanamazsınız.

Not

Gerçekleştirilmiş görünümleri destekleyen temel dosyalar, gerçekleştirilmiş görünüm tanımında görünmeyen yukarı akış tablolarındaki verileri (olası kişisel bilgiler dahil) içerebilir. Bu veriler, gerçekleştirilmiş görünümlerin artımlı olarak yenilenmesini desteklemek için temel alınan depolamaya otomatik olarak eklenir.

Gerçekleştirilmiş bir görünümün temel dosyaları, gerçekleştirilmiş görünüm şemasının parçası olmayan yukarı akış tablolarından verileri açığa çıkarma riski içerebileceğinden Databricks, temel alınan depolamanın güvenilmeyen aşağı akış tüketicileriyle paylaşılmaması önerilir.

Örneğin, gerçekleştirilmiş görünümün tanımının bir COUNT(DISTINCT field_a) yan tümce içerdiğini varsayalım. Gerçekleştirilmiş görünüm tanımı yalnızca toplama COUNT DISTINCT yan tümcesini içerse de, temel dosyalar gerçek değerlerinin field_alistesini içerir.

Mevcut işlevlerde yapılan değişiklikler

Delta Live Tabloları verileri Unity Kataloğu'na kalıcı hale getirmek üzere yapılandırıldığında, tablonun yaşam döngüsü Delta Live Tables işlem hattı tarafından yönetilir. Veri hattı tablo yaşam döngüsünü ve izinlerini yönettiğinden:

  • Delta Live Tables işlem hattı tanımından bir tablo kaldırıldığında, karşılık gelen gerçekleştirilmiş görünüm veya akış tablosu girişi sonraki işlem hattı güncelleştirmesinde Unity Kataloğu'ndan kaldırılır. Gerçek veriler, yanlışlıkla silinmişse kurtarılabilmesi için bir süre saklanır. Gerçekleştirilmiş görünüm veya akış tablosu veri hattı tanımına geri eklenerek veriler kurtarılabilir.
  • Delta Live Tables işlem hattının silinmesi, bu işlem hattında tanımlanan tüm tabloların silinmesine neden olur. Bu değişiklik nedeniyle Delta Live Tables kullanıcı arabirimi, işlem hattının silinmesini onaylamanızı isteyecek şekilde güncelleştirilir.
  • desteklemek için APPLY CHANGES INTOkullanılan yedekleme tabloları da dahil olmak üzere iç yedekleme tablolarına kullanıcılar tarafından doğrudan erişilemez.

Delta Live Tables işlem hattından Unity Kataloğu'na tablo yazma

Not

İşlem hattı için bir katalog ve hedef şema seçmezseniz, tablolar Unity Kataloğu'nda yayımlanmaz ve yalnızca aynı işlem hattındaki sorgular tarafından erişilebilir.

Tablolarınızı Unity Kataloğu'na yazmak için, işlem hattı oluşturduğunuzda Depolama seçenekleri'nin altında Unity Kataloğu'nu seçin, Katalog açılan menüsünden bir katalog seçin ve var olan bir şemayı seçin veya Hedef şema açılan menüsünde yeni şemanın adını girin. Unity Kataloğu katalogları hakkında bilgi edinmek için bkz . Azure Databricks'te kataloglar nelerdir?. Unity Kataloğu'ndaki şemalar hakkında bilgi edinmek için bkz . Azure Databricks'te şemalar nelerdir?.

Unity Kataloğu işlem hattına veri alma

Unity Kataloğu'nu kullanacak şekilde yapılandırılmış işlem hattınız şu kaynaklardan veri okuyabilir:

  • Unity Kataloğu yönetilen ve dış tablolar, görünümler, gerçekleştirilmiş görünümler ve akış tabloları.
  • Hive meta veri deposu tabloları ve görünümleri.
  • Unity Kataloğu dış konumlarından okumak için işlevini kullanan cloud_files() Otomatik Yükleyici.
  • Apache Kafka ve Amazon Kinesis.

Aşağıda Unity Kataloğu ve Hive meta veri deposu tablolarından okuma örnekleri verilmiştir.

Unity Kataloğu tablosundan toplu alma

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  my_catalog.my_schema.table1;

Python

@dlt.table
def table_name():
  return spark.table("my_catalog.my_schema.table")

Unity Kataloğu tablosundan değişiklikleri akışla aktarma

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  STREAM(my_catalog.my_schema.table1);

Python

@dlt.table
def table_name():
  return spark.readStream.table("my_catalog.my_schema.table")

Hive meta veri deposundan veri alma

Unity Kataloğu kullanan bir işlem hattı, kataloğu kullanarak hive_metastore Hive meta veri deposu tablolarındaki verileri okuyabilir:

SQL

CREATE OR REFRESH LIVE TABLE
  table_name
AS SELECT
  *
FROM
  hive_metastore.some_schema.table;

Python

@dlt.table
def table3():
  return spark.table("hive_metastore.some_schema.table")

Otomatik Yükleyiciden veri alma

SQL

CREATE OR REFRESH STREAMING TABLE
  table_name
AS SELECT
  *
FROM
  cloud_files(
    <path-to-uc-external-location>,
    "json"
  )

Python

@dlt.table(table_properties={"quality": "bronze"})
def table_name():
  return (
     spark.readStream.format("cloudFiles")
     .option("cloudFiles.format", "json")
     .load(f"{path_to_uc_external_location}")
 )

Gerçekleştirilmiş görünümleri paylaşma (canlı tablolar)

Varsayılan olarak, bir işlem hattı tarafından oluşturulan tablolar yalnızca işlem hattı sahibi tarafından sorgulanabilir. Diğer kullanıcılara GRANT deyimlerini kullanarak tablo sorgulama olanağı verebilir ve REVOKE deyimlerini kullanarak sorgu erişimini iptal edebilirsiniz. Unity Kataloğu'ndaki ayrıcalıklar hakkında daha fazla bilgi için bkz . Unity Kataloğu'nda ayrıcalıkları yönetme.

Tabloda seçme izni verme

GRANT SELECT ON TABLE
  my_catalog.my_schema.live_table
TO
  `user@databricks.com`

Tabloda seçmeyi iptal etme

REVOKE SELECT ON TABLE
  my_catalog.my_schema.live_table
FROM
  `user@databricks.com`

Tablo oluşturma veya gerçekleştirilmiş görünüm ayrıcalıkları oluşturma verme

GRANT CREATE { MATERIALIZED VIEW | TABLE } ON SCHEMA
  my_catalog.my_schema
TO
  { principal | user }

İşlem hattı kökenini görüntüleme

Delta Live Tables işlem hattındaki tabloların kökeni Katalog Gezgini'nde görünür. Unity Kataloğu özellikli işlem hattında gerçekleştirilmiş görünümler veya akış tabloları için, Katalog Gezgini köken kullanıcı arabirimi yukarı ve aşağı akış tablolarını gösterir. Unity Kataloğu kökeni hakkında daha fazla bilgi edinmek için bkz . Unity Kataloğu kullanarak veri kökenini yakalama ve görüntüleme.

Unity Kataloğu etkinleştirilmiş Delta Live Tables işlem hattında gerçekleştirilmiş görünüm veya akış tablosu için Katalog Gezgini köken kullanıcı arabirimi, işlem hattına geçerli çalışma alanından erişilebiliyorsa gerçekleştirilmiş görünümü veya akış tablosunu oluşturan işlem hattına da bağlanır.

Akış tablosunda veri ekleme, değiştirme veya silme

Unity Kataloğu'nda yayımlanan akış tablolarını değiştirmek için ekleme, güncelleştirme, silme ve birleştirme deyimleri dahil olmak üzere veri işleme dili (DML) deyimlerini kullanabilirsiniz. Akış tablolarında DML sorguları desteği, Genel Veri Koruma Yönetmeliği (GDPR) uyumluluğu için tabloları güncelleştirme gibi kullanım örneklerine olanak tanır.

Not

  • Akış tablosunun tablo şemasını değiştiren DML deyimleri desteklenmez. DML deyimlerinizin tablo şemasını geliştirmeye çalışmadığından emin olun.
  • Akış tablosunu güncelleştiren DML deyimleri, Databricks Runtime 13.3 LTS ve üzeri kullanılarak yalnızca paylaşılan unity kataloğu kümesinde veya SQL ambarında çalıştırılabilir.
  • Akış yalnızca ekleme veri kaynakları gerektirdiğinden, işlemeniz bir kaynak akış tablosundan değişiklik içeren akış gerektiriyorsa (örneğin, DML deyimlerine göre), kaynak akış tablosunu okurken skipChangeCommits bayrağını ayarlayın. skipChangeCommits Ayarlandığında, kaynak tablodaki kayıtları silen veya değiştiren işlemler yoksayılır. İşlemeniz bir akış tablosu gerektirmiyorsa, hedef tablo olarak gerçekleştirilmiş bir görünüm (yalnızca ekleme kısıtlaması yoktur) kullanabilirsiniz.

Aşağıda, akış tablosundaki kayıtları değiştirmeye yönelik DML deyimlerine örnekler verilmiştir.

Belirli bir kimlikle kayıtları silin:

DELETE FROM my_streaming_table WHERE id = 123;

Kayıtları belirli bir kimlikle güncelleştirin:

UPDATE my_streaming_table SET name = 'Jane Doe' WHERE id = 123;