Verileri dönüştürme
Bu makalede Azure Databricks ile veri dönüştürmeye giriş ve genel bakış sunulmaktadır. Verileri dönüştürme veya verileri hazırlama, tüm veri mühendisliği, analiz ve ML iş yüklerinde önemli bir adımdır.
Bu makaledeki örnek desenler ve öneriler, Delta Lake tarafından desteklenen göl evi tablolarıyla çalışmaya odaklanır. Delta Lake, Databricks lakehouse'un ACID garantilerini sağladığından, diğer biçimlerde veya veri sistemlerindeki verilerle çalışırken farklı davranışlar gözlemleyebilirsiniz.
Databricks, verileri ham veya neredeyse ham durumdaki bir lakehouse'a almanızı ve ardından dönüşümleri ve zenginleştirmeyi ayrı bir işleme adımı olarak uygulamayı önerir. Bu desen, madalyon mimarisi olarak bilinir. Bkz . Madalyon göl evi mimarisi nedir?.
Dönüştürmeniz gereken verilerin henüz bir lakehouse'a yüklenmediğini biliyorsanız bkz . Databricks lakehouse'a veri alma. Dönüştürmeleri yazmak için lakehouse verilerini bulmaya çalışıyorsanız bkz . Verileri bulma.
Tüm dönüştürmeler, bir veri kaynağına toplu iş veya akış sorgusu yazarak başlar. Verileri sorgulama hakkında bilginiz yoksa bkz . Verileri sorgulama.
Dönüştürülmüş verileri delta tablosuna kaydettikten sonra, bu tabloyu ML için özellik tablosu olarak kullanabilirsiniz. Bkz. Özellik mühendisliği ve sunma.
Not
Buradaki makalelerde Azure Databricks'te dönüşümler ele alınıyor. Azure Databricks, birçok yaygın veri hazırlama platformuna yönelik bağlantıları da destekler. Bkz . İş Ortağı Bağlantısı kullanarak veri hazırlama iş ortaklarına bağlanma.
Spark dönüşümleri ile lakehouse dönüşümleri karşılaştırması
Bu makale, ETL veya ELT'de T ile ilişkili olarak tranformations tanımlamaya odaklanmaktadır. Apache Spark işleme modeli de dönüştürme sözcüğünü ilgili bir şekilde kullanır. Kısaca: Apache Spark'ta tüm işlemler dönüştürmeler veya eylemler olarak tanımlanır.
- Dönüştürmeler: plana bazı işleme mantığı ekleyin. Verileri okuma, birleştirmeler, toplamalar ve tür ataması örnek olarak verilebilir.
- Eylemler: bir sonucu değerlendirmek ve çıkarmak için işleme mantığını tetikleme. Yazma işlemleri, sonuçları görüntüleme veya önizleme, el ile önbelleğe alma veya satır sayısını alma örnekleri verilebilir.
Apache Spark gecikmeli bir yürütme modeli kullanır, yani bir işlem koleksiyonu tarafından tanımlanan mantığın hiçbiri bir eylem tetiklenene kadar değerlendirilmez. Bu model, veri işleme işlem hatlarını tanımlarken önemli bir sonuca sahiptir: yalnızca sonuçları hedef tabloya geri kaydetmek için eylemleri kullanın.
Eylemler mantığı iyileştirmeye yönelik bir işleme performans sorununu temsil ettiğinden Azure Databricks, mantığın en iyi şekilde yürütülmesini sağlamak için Apache Spark'ta zaten bulunanların üzerine çok sayıda iyileştirme eklemiştir. Bu iyileştirmeler, belirli bir eylem tarafından tetiklenen tüm dönüştürmeleri bir kerede dikkate alır ve verilerin fiziksel düzenine göre en uygun planı bulur. Verileri el ile önbelleğe almak veya üretim işlem hatlarındaki önizleme sonuçlarını döndürmek bu iyileştirmeleri kesintiye uğratabilir ve maliyet ve gecikme süresinde önemli artışlara yol açabilir.
Bu nedenle, bir veya daha fazla göl evi tablosuna uygulanan ve yeni bir lakehouse tablosuna neden olan herhangi bir işlem koleksiyonu olacak şekilde bir göl evi dönüşümü tanımlayabiliriz. Birleştirmeler ve toplamalar gibi dönüştürmeler ayrı ayrı ele alınsa da, bu desenlerin birçoğunun tek bir işlem adımında birleştirildiğini ve Azure Databricks'teki iyileştiricilere güvenerek en verimli planı bulabileceğinizi unutmayın.
Akış ve toplu işlem arasındaki farklar nelerdir?
Akış ve toplu işleme, Azure Databricks'te aynı söz diziminin çoğunu kullansa da, her birinin kendi semantiği vardır.
Toplu işleme, sabit miktarda statik, değişmeyen verileri tek bir işlem olarak işlemek için açık yönergeler tanımlamanızı sağlar.
Akış işleme, ilişkisiz, sürekli büyüyen bir veri kümesine yönelik bir sorgu tanımlamanıza ve ardından verileri küçük, artımlı toplu işlemler halinde işlemenize olanak tanır.
Azure Databricks'te toplu işlemlerde Spark SQL veya DataFrame'ler kullanılırken akış işleme, Yapılandırılmış Akış'ı kullanır.
Aşağıdaki tabloda gösterildiği gibi okuma ve yazma işlemlerine bakarak toplu Apache Spark komutlarını Yapılandırılmış Akış'tan ayırt edebilirsiniz:
Apache Spark | Yapılandırılmış Akış | |
---|---|---|
Okuma | spark.read.load() |
spark.readStream.load() |
Yazma | spark.write.save() |
spark.writeStream.start() |
Gerçekleştirilmiş görünümler genellikle toplu işlem garantilerine uygundur, ancak Delta Live Tables mümkün olduğunda sonuçları artımlı olarak hesaplamak için kullanılır. Gerçekleştirilmiş bir görünüm tarafından döndürülen sonuçlar her zaman mantığın toplu değerlendirmesine eşdeğerdir, ancak Azure Databricks mümkün olduğunda bu sonuçları artımlı olarak işlemeye çalışır.
Akış tabloları her zaman sonuçları artımlı olarak hesaplar. Birçok akış veri kaynağı kayıtları yalnızca bir saat veya gün boyunca tuttuğundan, akış tabloları tarafından kullanılan işleme modeli, bir veri kaynağındaki her kayıt toplu işleminin yalnızca bir kez işlendiğini varsayar.
Azure Databricks, aşağıdaki kullanım örneklerinde akış sorguları yazmak için SQL kullanımını destekler:
- Databricks SQL kullanarak Unity Kataloğu'nda akış tabloları tanımlama.
- Delta Live Tables işlem hatları için kaynak kodu tanımlama.
Not
Ayrıca Python Yapılandırılmış Akış kodunu kullanarak Delta Live Tablolarında akış tablolarını bildirebilirsiniz.
Toplu dönüştürmeler
Toplu dönüştürmeler, belirli bir zaman noktasında iyi tanımlanmış bir veri varlığı kümesi üzerinde çalışır. Toplu dönüştürmeler tek seferlik işlemler olabilir, ancak genellikle üretim sistemlerini güncel tutmak için düzenli olarak çalışan zamanlanmış işlerin veya işlem hatlarının bir parçasıdır.
Artımlı dönüşümler
Artımlı desenler genellikle veri kaynağının yalnızca eklendiğini ve kararlı bir şemaya sahip olduğunu varsayar. Aşağıdaki makalelerde güncelleştirmeler, silmeler veya şema değişiklikleriyle karşılaşan tablolardaki artımlı dönüştürmelere ilişkin ayrıntılar sağlanır:
- DEĞIŞIKLIKLERI UYGULA API'leri: Delta Live Tablolarıyla değişiklik verilerini yakalamayı basitleştirme
- Azure Databricks'te Delta Lake değişiklik veri akışını kullanma
- Delta Lake tablo şemasını güncelleştirme
- Delta tablo akışı okuma ve yazma işlemleri
Gerçek zamanlı dönüşümler
Delta Lake, lakehouse'unuzu sorgulayan tüm kullanıcılar ve uygulamalar için büyük miktarlardaki verilere neredeyse gerçek zamanlı erişim sağlama konusunda başarılıdır, ancak bulut nesne depolama alanına dosya ve meta veri yazma yükü nedeniyle Delta Lake havuzlarına yazan birçok iş yükü için gerçek zamanlı gecikme süresine ulaşılamaz.
Databricks, son derece düşük gecikme süreli akış uygulamaları için Kafka gibi gerçek zamanlı iş yükleri için tasarlanmış kaynak ve havuz sistemlerinin seçilmesini önerir. Azure Databricks'i kullanarak toplamalar, akışlar arasında birleştirmeler ve akış verilerini lakehouse'da depolanan yavaş değişen boyut verileriyle birleştirme gibi verileri zenginleştirebilirsiniz.