Aracılığıyla paylaş


Azure Databricks'te birleştirmelerle çalışma

Databricks, ANSI standart birleştirme söz dizimlerini destekler. Bu makalede toplu işlem ve akış işleme ile birleştirmeler arasındaki farklar açıklanmaktadır.

Not

Databricks, UNION, INTERSECTve EXCEPTküme işleçleri için standart söz dizimini de destekler. Bkz. Küme işleçleri.

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ış-statük birleşimleri durumsuzdur, ancak artımlı bir veri kaynağını (olgu tablosu gibi) statik bir veri kaynağıyla (yavaş değişen bir boyut tablosu gibi) birleştirmek için iyi bir seçenek sunar. 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 kademeli hesaplamasını iyileştirmek için gerçekleştirilmiş görünüm kullanımını önerir. Bkz Gerçekleştirilmiş görünümler.

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, bir akış-akış eklemini uygulamadan önce, su işaretlerinin durum yönetimini nasıl etkilediğini de içeren, duruma dayalı akış için operasyonel semantik konusunda güçlü bir anlayış geliştirilmesini önerir. Aşağıdaki makalelere bakın:

Databricks, tüm akış-akış birleşimlerinin her iki tarafı için filigranların belirtilmesini önerir. 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

Akış akışı 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 gerektirmediğinden filigran yapılandırmanız gerekmez ve düşük gecikme ile 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")
)

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 optimizasyonu ve Azure Databricks'te birleştirme performansını iyileştirme.