Azure Databricks'te birleştirmelerle çalışma
Databricks, ANSI standart birleştirme söz dizimlerini destekler. Bu makalede, toplu iş ve akış işleme ile birleştirmeler arasındaki farklar açıklanır ve birleştirme performansını iyileştirmeye yönelik bazı öneriler sağlanır.
Not
Databricks, , INTERSECT
ve EXCEPT
küme işleçleri UNION
için standart söz dizimini de destekler. Bkz. İşleçleri ayarlama.
Akış ve toplu birleşimler arasındaki farklar
Azure Databricks'te birleştirmeler durum bilgisi olan veya durum bilgisi olmayan birleşimlerdir.
Tüm toplu birleşimler durum bilgisi olmayan birleşimlerdir. Sonuçlar hemen işlenir ve sorgu çalıştırıldığında verileri yansıtır. Sorgu her yürütülürken, yeni sonuçlar belirtilen kaynak verilere göre hesaplanır. Bkz. Batch birleşimleri.
İki akış veri kaynağı arasındaki birleştirmeler durum bilgisi vardır. Durum bilgisi olan birleştirmelerde Azure Databricks, veri kaynakları ve sonuçlar hakkındaki bilgileri izler ve sonuçları yinelemeli olarak güncelleştirir. Durum bilgisi olan birleşimler, çevrimiçi veri işleme için güçlü çözümler sağlayabilir, ancak etkili bir şekilde uygulanması zor olabilir. Çıkış moduna, tetikleyici aralığına ve filigrana bağlı olarak karmaşık işlem semantiğine sahiptir. Bkz . Akış akışı birleştirmeleri.
Akış statik birleşimleri durum bilgisi yoktur, ancak artımlı veri kaynağını (olgu tablosu gibi) statik veri kaynağıyla (yavaş değişen boyutsal tablo gibi) birleştirmek için iyi bir seçenek sağlar. Sorgu her yürütülürken her iki taraftan tüm kayıtları birleştirmek yerine, yalnızca akış kaynağından yeni alınan kayıtlar statik tablonun geçerli sürümüyle birleştirilir. Bkz . Akış statik birleşimleri.
Toplu birleşimler
Azure Databricks iç, dış, yarı, anti ve çapraz birleşimler dahil olmak üzere standart SQL birleştirme söz dizimlerini destekler. Bkz. JOIN.
Not
Databricks, iç birleşim sonuçlarının artımlı hesaplamasını iyileştirmek için gerçekleştirilmiş bir görünüm kullanılmasını önerir. Bkz . Databricks SQL'de gerçekleştirilmiş görünümleri kullanma.
Akış akışı birleşimleri
İki akış veri kaynağına katılmak, durum bilgilerini yönetme ve sonuç hesaplaması ve çıkışı hakkında mantık yürütme konusunda önemli zorluklara neden olabilir. Databricks, akış akışı katılımını uygulamadan önce, filigranların durum yönetimini nasıl etkilediğini de içeren durum bilgisi içeren akış için operasyonel semantiğin güçlü bir şekilde anlaşılmasını önerir. Aşağıdaki makalelere bakın:
- Durum bilgisi olan akış nedir?
- Veri işleme eşiklerini denetlemek için filigranları uygulama
- Akış birleştirmeleri
Databricks, tüm stream-steam birleşimlerinin her iki tarafı için filigranların belirtilmesi önerilir. Aşağıdaki birleştirme türleri desteklenir:
- İç birleşimler
- Sol dış birleşimler
- Sağ dış birleşimler
- Tam dış birleşimler
- Sol yarı birleşimler
Stream-steam birleşimleriyle ilgili Apache Spark Yapılandırılmış Akış belgelerine bakın.
Akış statik birleşimleri
Not
Akış statik birleşimleri için açıklanan davranış, statik verilerin Delta Lake kullanılarak depolandığını varsayar.
Akış statik birleşimi, durum bilgisi olmayan birleştirme kullanarak Delta tablosunun (statik veriler) en son geçerli sürümünü veri akışına ekler.
Azure Databricks bir akış statik birleşiminde mikro toplu verileri işlediğinde, statik Delta tablosundaki verilerin en son geçerli sürümü geçerli mikro toplu iş içinde bulunan kayıtlarla birleşir. Birleştirme durum bilgisi olmadığından filigran yapılandırmanız gerekmez ve düşük gecikme süresiyle sonuçları işleyebilirsiniz. Birleştirmede kullanılan statik Delta tablosundaki veriler yavaş değişiyor olmalıdır.
Aşağıdaki örnekte bu desen gösterilmektedir:
streamingDF = spark.readStream.table("orders")
staticDF = spark.read.table("customers")
query = (streamingDF
.join(staticDF, streamingDF.customer_id==staticDF.id, "inner")
.writeStream
.option("checkpointLocation", checkpoint_path)
.table("orders_with_customer_info")
)
Birleştirme performansını iyileştirme
Foton etkin işlem her zaman en iyi birleştirme türünü seçer. Bkz . Photon nedir?.
Foton etkinken en son Databricks Runtime sürümünü kullanmak genellikle iyi bir birleştirme performansı sağlar, ancak aşağıdaki önerileri de göz önünde bulundurmanız gerekir:
Çapraz birleşimler çok pahalıdır. Düşük gecikme süresi veya sık yeniden derleme gerektiren iş yüklerinden ve sorgulardan çapraz birleştirmeleri kaldırın.
Katılma sırası önemlidir. Birden çok birleştirme gerçekleştirirken, önce en küçük tablolarınızı birleştirin ve ardından sonucu daha büyük tablolarla birleştirin.
İyileştirici, birçok birleştirme ve toplama içeren sorgularda zorlanabilir. Ara sonuçların kaydedilmesi sorgu planlama ve bilgi işlem sonuçlarını hızlandırabilir.
Performansı geliştirmek için yeni istatistikler tutun. (Genel Önizleme) ile
ANALYZE
tahmine dayalı iyileştirme, istatistikleri otomatik olarak güncelleştirebilir ve koruyabilir. Sorgu planlayıcısındakiANALYZE TABLE table_name COMPUTE STATISTICS
istatistikleri güncelleştirmek için sorguyu da çalıştırabilirsiniz.
Önemli
ile ANALYZE
tahmine dayalı iyileştirme Genel Önizleme aşamasındadır. Yazma işlemleri sırasında akıllı istatistik toplamayı içerir. Genel Önizleme'ye kaydolmak için bu formu kullanın.
Not
Databricks Runtime 14.3 LTS ve üzerinde Delta Lake'in veri atlama için istatistikleri topladığı sütunları değiştirebilir ve ardından Delta günlüğündeki mevcut istatistikleri yeniden derleyebilirsiniz. Bkz . Delta istatistik sütunlarını belirtme.
Azure Databricks'te birleştirme ipuçları
Apache Spark, aralık birleştirmeleri ve eğme birleşimleri için birleştirme ipuçları belirtmeyi destekler. Azure Databricks bu birleşimleri otomatik olarak iyileştirdiğinden, eğme birleştirmeleri için ipuçları gerekli değildir. bkz. İpuçları
Birleştirme performansı düşükse ve eşitsizlik birleşimleri gerçekleştiriyorsanız, aralık birleştirmeleri için ipuçları yararlı olabilir. Zaman damgası aralıklarında veya kümeleme kimlikleri aralığında birleştirme örnekleri verilebilir. Bkz. Aralık birleştirme iyileştirmesi.