Azure Databricks'te join işlemleriyle çalışma

Databricks, ANSI standart birleştirme söz dizimlerini destekler. Bu sayfada 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 işlem birleşimleri 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 takibi yapılan birleştirmelerde Azure Databricks, veri kaynakları ve sonuçlar hakkındaki bilgileri izler ve sonucu iteratif şekilde günceller. Durumlu 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ış eşleştirmeleri

İ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 sayfalara 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ştirmeler
  • Sol dış joinlar
  • 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.

Statik akış 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 taşımadığından filigran yapılandırmanız gerekmez ve sonuçları düşük gecikme süresiyle işleyebilirsiniz. Birleştirmede kullanılan statik Delta tablosundaki veriler yavaş değişiyor olmalıdır.

Not

Statik tabloyu çalıştırmalar arasında güncelleştirirseniz, aynı akış verilerinin yeniden işlenmesi farklı sonuçlara neden olabilir. Her mikro toplu iş işleme sırasında statik tablonun en son sürümüne karşı birleştirildiğinden, birleştirmenin statik tarafı değişiyorsa akış statik birleşiminin çıkışı belirleyici değildir

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. Örnekler arasında zaman damgası aralıklarında veya kümeleme kimlikleri aralığında birleştirme bulunmaktadır. Bkz. Aralık birleştirme optimizasyonu ve Azure Databricks'te birleştirme performansını iyileştirme.