Aracılığıyla paylaş


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, , INTERSECTve EXCEPTküme işleçleri UNIONiç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:

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ındaki ANALYZE 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.