Aracılığıyla paylaş


Lakeflow Spark Deklaratif İşlem Hatları Geliştirme

İşlem hattı kodu geliştirme ve test etme, diğer Apache Spark iş yüklerinden farklıdır. Bu makalede, işlem hattı kodu geliştirirken desteklenen işlevlere, en iyi yöntemlere ve dikkat edilmesi gerekenlere genel bir bakış sağlanır. Daha fazla öneri ve en iyi yöntem için bkz. İşlem hatlarına yazılım geliştirme ve DevOps en iyi yöntemlerini uygulama.

Uyarı

Kodu doğrulamak veya bir güncelleştirmeyi çalıştırmak için işlem hattı yapılandırmasına kaynak kodu eklemeniz gerekir. Bkz. İşlem Hatlarını Yapılandırma.

İşlem hattı kaynak kodu için hangi dosyalar geçerlidir?

İşlem hattı kodu Python veya SQL olabilir. Tek bir işlem hattının desteklediği Python ve SQL kaynak kodu dosyalarının bir karışımına sahip olabilirsiniz, ancak her dosya yalnızca bir dil içerebilir. Bkz . Python ile işlem hattı kodu geliştirme ve SQL ile Lakeflow Spark Bildirimli İşlem Hatları kodu geliştirme.

İşlem hatları için kaynak dosyalar çalışma alanınızda depolanır. Çalışma alanı dosyaları, Lakeflow Pipelines Düzenleyicisi'nde yazılan Python veya SQL betiklerini temsil eder. Ayrıca, dosyaları tercih ettiğiniz IDE'de yerel olarak düzenleyebilir ve çalışma alanıyla eşitleyebilirsiniz. Çalışma alanı dosyaları hakkında bilgi için bkz. Çalışma alanı dosyaları nedir?. Lakeflow Pipelines Düzenleyicisi ile düzenleme hakkında bilgi için bkz. Lakeflow Pipelines Düzenleyicisi ile ETL işlem hatlarını geliştirme ve hatalarını ayıklama. Yerel IDE'de kod yazma hakkında bilgi için bkz. Yerel geliştirme ortamınızda işlem hattı kodu geliştirme.

Python kodunu modül veya kitaplık olarak geliştirirseniz, kodu yükleyip içeri aktarmanız ve ardından kaynak kod olarak yapılandırılmış bir Python dosyasından yöntemleri çağırmanız gerekir. Bkz. İşlem hatları için Python bağımlılıklarını yönetme.

Uyarı

Python not defterinde rastgele SQL komutları kullanmanız gerekiyorsa, SQL'i Python kodu olarak çalıştırmak için söz dizimi deseni spark.sql("<QUERY>") kullanabilirsiniz.

Unity Kataloğu işlevleri, SQL'de kullanmak üzere rastgele Python kullanıcı tanımlı işlevleri kaydetmenize olanak tanır. Bkz Unity Kataloğu'nda Kullanıcı tanımlı işlevler (UDF'ler).

İşlem hattı geliştirme özelliklerine genel bakış

İşlem hatları birçok Azure Databricks geliştirme özelliğini genişletir ve bu özelliklerden yararlanır ve yeni özellikler ve kavramlar sunar. Aşağıdaki tabloda, işlem hattı kodu geliştirmeyi destekleyen kavramlara ve özelliklere kısa bir genel bakış sağlanmaktadır:

Özellik Description
Geliştirme modu İşlem hatlarını etkileşimli olarak çalıştırmak (Lakeflow Pipelines Düzenleyicisi aracılığıyla güncelleştirmeyi seçerek) geliştirme modunu kullanır. Yeni işlem hatları, bir zamanlama veya otomatik tetikleyici aracılığıyla otomatik olarak çalıştırılırken geliştirme modu kapalı olarak çalışır. Bkz . Geliştirme modu.
Kuru çalıştırma Kuru çalıştırma güncelleştirmesi, herhangi bir tabloda güncelleştirme çalıştırmadan işlem hattı kaynak kodunun doğruluğunu doğrular. Bkz. Tabloların güncellenmesini beklemeden işlem hattını hatalara karşı kontrol edin.
Lakeflow Pipelines Düzenleyicisi İşlem hatları için kaynak kodu olarak yapılandırılan Python ve SQL dosyaları, kodu doğrulamak ve güncelleştirmeleri çalıştırmak için etkileşimli seçenekler sağlar. Bkz. Lakeflow Pipelines Düzenleyicisi ile ETL işlem hatlarını geliştirme ve hatalarını ayıklama.
Parametreler Test ve genişletilebilirliği basitleştirmek için kaynak kodu ve işlem hattı yapılandırmalarındaki parametrelerden yararlanın. Bkz İşlem hatlarıyla parametre kullanımı.
Databricks Varlık Paketleri Databricks Varlık Paketleri, işlem hattı yapılandırmalarını ve kaynak kodunu çalışma alanları arasında taşımanıza olanak tanır. Bkz. Bir işlem hattını Databricks Varlık Paketi projesine dönüştürme.

Geliştirme ve test için örnek veri kümeleri oluşturma

Databricks, işlem hattı mantığını beklenen verilerle ve potansiyel olarak hatalı biçimlendirilmiş veya bozuk kayıtlarla test etmek için bir geliştirme ve test veri kümesi oluşturmanızı önerir. Geliştirme ve test için yararlı olabilecek veri kümeleri oluşturmanın aşağıdakiler de dahil olmak üzere birden çok yolu vardır:

  • Üretim veri kümesinden bir veri alt kümesi seçin.
  • PII içeren kaynaklar için anonimleştirilmiş veya yapay olarak oluşturulmuş verileri kullanın. Test için veri oluşturmak amacıyla faker kitaplığını kullanan bir öğreticiyi görmek istiyorsanız, Öğretici: Değişiklik verilerini yakalamayı kullanarak ETL işlem hattı oluşturma kısmına bakın.
  • Aşağı akış dönüştürme mantığını temel alan iyi tanımlanmış sonuçlarla test verileri oluşturun.
  • Veri şeması beklentilerini bozan kayıtlar oluşturarak olası veri bozulmalarını, hatalı biçimlendirilmiş kayıtları ve yukarı akış veri değişikliklerini tahmin edin.

Örneğin, aşağıdaki kodu kullanarak veri kümesini tanımlayan bir dosyanız varsa:

CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
  "/production/data",
  format => "json")

Aşağıdaki gibi bir sorgu kullanarak kayıtların bir alt kümesini içeren örnek bir veri kümesi oluşturabilirsiniz:

CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading

Aşağıdaki örnekte, geliştirme veya test için üretim verilerinin bir alt kümesini oluşturmak üzere yayımlanan verilerin filtrelenmesi gösterilmektedir:

CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY

Bu farklı veri kümelerini kullanmak için, dönüştürme mantığını uygulayan kaynak koduyla birden çok işlem hattı oluşturun. Her işlem hattı veri kümesindeki input_data verileri okuyabilir, ancak ortama özgü veri kümesini oluşturan dosyayı içerecek şekilde yapılandırılır.

İşlem hattı veri kümeleri verileri nasıl işler?

Aşağıdaki tabloda maddileşmiş görünümlerin, akış tablolarının ve görünümlerin verileri nasıl işlediği açıklanmaktadır.

Veri kümesi türü Kayıtlar tanımlı sorgular aracılığıyla nasıl işlenir?
Akış tablosu Her kayıt tam olarak bir kez işlenir. Bu, sadece eklemeler yapılabilen bir kaynak olduğunu varsayar.
Gerçekleştirilmiş görünüm Kayıtlar, geçerli veri durumunun doğru sonuçlarını döndürmek için gerektiği şekilde işlenir. Malzemeleşmiş görünümler, dönüşüm, toplama veya yavaş sorguların ve sık kullanılan hesaplamaların önceden hesaplanması gibi işlem görevleri için kullanılmalıdır. Sonuçlar güncelleştirmeler arasında önbelleğe alınır.
View Görünüm sorgulandığında her seferinde kayıtlar işlenir. Genel veri kümelerinde yayımlanmaması gereken ara dönüştürmeler ve veri kalitesi denetimleri için görünümleri kullanın.

İlk veri kümelerinizi boru hatlarında tanımlayın

İşlem hatları Python ve SQL için yeni söz dizimi sunar. İşlem hattı söz diziminin temellerini öğrenmek için bkz . Python ile işlem hattı kodu geliştirme ve SQL ile Lakeflow Spark Bildirimli İşlem Hatları kodu geliştirme.

Uyarı

İşlem hatları veri kümesi tanımlarını güncelleştirme işlemeden ayırır ve işlem hattı kaynağı etkileşimli yürütme için tasarlanmamıştır.

İşlem hatlarını nasıl yapılandırabilirsiniz?

İşlem hattı ayarları iki geniş kategoriye ayrılır:

  1. Veri kümelerini bildirmek için işlem hattı söz dizimini kullanan bir dosya koleksiyonunu ( kaynak kodu olarak bilinir) tanımlayan yapılandırmalar.
  2. İşlem hattı altyapısını denetleen yapılandırmalar, bağımlılık yönetimi, güncelleştirmelerin nasıl işlendiği ve tabloların çalışma alanına nasıl kaydedildiği.

Yapılandırmaların çoğu isteğe bağlıdır, ancak bazıları özellikle üretim işlem hatlarını yapılandırırken dikkatli olunmalarını gerektirir. Bunlar şunları içerir:

  • Verileri işlem hattı dışında kullanılabilir hale getirmek için, Hive meta veri deposunda yayımlamak üzere hedef şema veya Unity Kataloğu'nda yayımlamak üzere hedef katalog ve hedef şema bildirmeniz gerekir.
  • Veri erişim izinleri, yürütme için kullanılan küme aracılığıyla yapılandırılır. Kümenizin veri kaynakları için yapılandırılmış uygun izinlere sahip olduğundan ve hedef depolama konumunun belirtildiyseolduğundan emin olun.

İşlem hatları için kaynak kodu yazmak üzere Python ve SQL kullanma hakkında ayrıntılı bilgi için bkz. Pipeline SQL diline başvuru ve Lakeflow Spark Bildirimli İşlem Hatları Python diline başvuru.

İşlem hattı ayarları ve yapılandırmaları hakkında daha fazla bilgi için bkz. İşlem Hatlarını Yapılandırma.

İlk işlem hattınızı dağıtın ve güncelleştirmeleri tetikleyin

Verileri SDP ile işlemek için bir işlem hattı yapılandırın. İşlem hattı yapılandırıldıktan sonra işlem hattınızdaki her veri kümesinin sonuçlarını hesaplamak için bir güncelleştirme tetikleyebilirsiniz. İşlem hatlarını kullanmaya başlamak için bkz . Öğretici: Değişiklik verilerini yakalamayı kullanarak ETL işlem hattı oluşturma.

Boru hattı güncellemesi nedir?

Boru hatları,bir güncelleştirme başlattığınızda altyapıyı kurar ve veri durumunu yeniden hesaplar. Bir güncelleştirme aşağıdakileri yapar:

  • Doğru yapılandırmaya sahip bir küme başlatır.
  • Tanımlanan tüm tabloları ve görünümleri bulur ve geçersiz sütun adları, eksik bağımlılıklar ve söz dizimi hataları gibi analiz hatalarını denetler.
  • Kullanılabilir en son verilerle tabloları ve görünümleri oluşturur veya güncelleştirir.

Boru hatları, kullanım senaryonuzun maliyet ve gecikme gereksinimlerine bağlı olarak sürekli veya bir zamanlamaya uygun şekilde çalıştırılabilir. Bkz İşlem hattı güncellemesini çalıştırma.

İşlem hatları ile veri alma

İşlem hatları, Azure Databricks'te kullanılabilen tüm veri kaynaklarını destekler.

Databricks, çoğu veri akışı senaryosu için akış tablolarının kullanılmasını önerir. Databricks, bulut nesne depolama alanına gelen dosyalar için Otomatik Yükleyici'yi önerir. Çoğu ileti veriyosundan bir işlem hattıyla verileri doğrudan alabilirsiniz.

Bulut depolamaya erişimi yapılandırma hakkında daha fazla bilgi için bkz. Bulut depolama yapılandırması.

Otomatik Yükleyici tarafından desteklenmeyen biçimler için Python veya SQL kullanarak Apache Spark tarafından desteklenen herhangi bir biçimi sorgulayabilirsiniz. Bkz . İşlem hatlarına veri yükleme.

Veri kalitesini izleme ve uygulama

Bir veri kümesinin içeriğinde veri kalitesi denetimleri belirtmek için beklentileri kullanabilirsiniz. Geleneksel bir veritabanında kısıtlamadan başarısız olan kayıtların eklenmesini engelleyen bir CHECK kısıtlamasının aksine, veri kalitesi gereksinimlerinde başarısız olan veriler işlenirken beklentiler esneklik sağlar. Bu esneklik, karmaşık olmasını beklediğiniz verileri ve katı kalite gereksinimlerini karşılaması gereken verileri işlemenizi ve depolamanızı sağlar. bkz. İşlem hattı beklentileriyle veri kalitesini yönetme.

SDP, Delta Lake'in işlevselliğini genişletir. İşlem hatları tarafından oluşturulan ve yönetilen tablolar Delta tabloları olduğundan, Delta Lake tarafından sağlanan aynı garantilere ve özelliklere sahiptir. Bkz. Azure Databricks'te Delta Lake nedir?.

İşlem hatları, Delta Lake'te ayarlanabilen birçok tablo özelliğine ek olarak çeşitli tablo özellikleri ekler. İşlem hattı özellikleri referansı ve Tablo özellikleri referansı'na bakın.

Tablolar, veri işlem hatları tarafından nasıl oluşturulur ve yönetilir?

Azure Databricks, işlem hatları tarafından oluşturulan tabloları otomatik olarak yönetir ve bir tablonun geçerli durumunu doğru hesaplamak için güncelleştirmelerin nasıl işlenmesi gerektiğini belirler ve bir dizi bakım ve iyileştirme görevi gerçekleştirir.

çoğu işlem için işlem hattının hedef tabloya yönelik tüm güncelleştirmeleri, eklemeleri ve silmeleri işlemesine izin vermelisiniz. Ayrıntılar ve sınırlamalar için bkz: El ile yapılan silmeleri veya güncelleştirmeleri koruma.

İşlem hatları tarafından gerçekleştirilen bakım görevleri

Azure Databricks , tahmine dayalı iyileştirmeyi kullanarak en uygun tempoda işlem hatları tarafından yönetilen tablolarda bakım görevleri gerçekleştirir. Bakım, tabloların eski sürümlerini kaldırarak sorgu performansını artırabilir ve maliyeti azaltabilir. Buna tam OPTIMIZE ve VACUUM işlemler dahildir. Bakım görevleri, tahmine dayalı iyileştirme ile karar verilmiş bir zamanlamaya göre ve yalnızca önceki bakımdan sonra işlem hattı güncelleştirmesi çalıştırıldığında gerçekleştirilir.

Tahmine dayalı iyileştirmenin ne sıklıkta çalıştığını anlamak ve bakım maliyetlerini anlamak için bkz. Tahmine dayalı iyileştirme sistemi tablosu başvurusu.

Sınırlamalar

Sınırlamaların listesi için bkz. İşlem Hattı Sınırlamaları.

Unity Kataloğu ile işlem hatlarını kullanmaya özgü gereksinimlerin ve sınırlamaların listesi için bkz. Unity Kataloğu'nu işlem hatlarıyla kullanma

Ek kaynaklar