Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Durumlu akış nedir?
- Veri işleme eşiklerini denetlemek için filigranları uygulama
- Akışlar arası birleştirmeler
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.