Akış ve artımlı alım
Azure Databricks, aşağıdakiler dahil olmak üzere alım iş yükleriyle ilişkili çok sayıda ürünü yedeklemek için Apache Spark Yapılandırılmış Akış kullanır:
- Otomatik Yükleyici
COPY INTO
- DLT işlem hatları
- Databricks SQL'de maddileştirilmiş görünümler ve akış tabloları
Bu makalede akış ve artımlı toplu işleme semantiği arasındaki bazı farklar ele alınmaktadır ve Databricks'te istenen semantik için alım iş yüklerini yapılandırmaya yönelik üst düzey bir genel bakış sağlanmaktadır.
Akış ve kademeli toplu veri alımı arasındaki fark nedir?
Olası alım iş akışı yapılandırmaları, neredeyse gerçek zamanlı işlemeden seyrek ve artan toplu işlemeye kadar değişir. Her iki desen de artımlı işlemeyi desteklemek için Apache Spark Yapılandırılmış Akış kullanır, ancak farklı semantiklere sahiptir. Kolaylık olması için, bu makale neredeyse gerçek zamanlı veri alımını akış alımı ve daha seyrek artan işlemeyi artımlı toplu alım olarak ifade eder.
Akış alımı
Veri alımı ve tablo güncellemeleri bağlamında veri akışı, Azure Databricks'in her zaman aktif olan altyapıyı kullanarak verileri kaynaktan havuza mikro partiler halinde aldığı neredeyse gerçek zamanlı veri işlemeyi ifade eder. Bir akış iş yükü, alımı durduran bir hata oluşmadığı sürece yapılandırılmış veri kaynaklarından güncelleştirmeleri sürekli alır.
Artımlı toplu alma
Artımlı toplu veri alma, yeni kayıtların kısa süreli bir görev kapsamında bir veri kaynağından işlendiği bir deseni ifade eder. Artımlı toplu alım genellikle bir zamanlamaya göre gerçekleşir, ancak manuel olarak veya dosyanın gelişine bağlı olarak da tetiklenebilir.
Artımlı toplu veri alımı, veri kaynağındaki yeni kayıtları otomatik olarak algılaması ve zaten alınmış olan kayıtları yoksayması bakımından toplu alımdan farklıdır.
İşlerle Veri Alımı
Databricks İşleri, iş akışlarını düzenlemenize ve not defterleri, kitaplıklar, DLT işlem hatları ve Databricks SQL sorguları içeren görevler zamanlamanıza olanak tanır.
Not
Artımlı toplu alımı yapılandırmak için tüm Azure Databricks işlem türlerini ve görev türlerini kullanabilirsiniz. Akış alımı, yalnızca klasik iş hesaplamalarında ve DLT'de üretim ortamında desteklenir.
İşlerin iki birincil işlem modu vardır:
- Sürekli işler bir hatayla karşılaşırsa otomatik olarak yeniden dener. Bu mod, akış alımı için tasarlanmıştır.
-
Tetiklenen işler tetiklendiğinde görevleri çalıştırır. Tetikleyiciler şunlardır:
- İşleri belirli bir zamanlamaya göre çalıştıran zamana dayalı tetikleyiciler.
- Dosyalar belirli bir konuma geldiğinde işleri çalıştıran dosya tabanlı tetikleyiciler.
- REST API çağrıları, Azure Databricks CLI komutlarının yürütülmesi veya çalışma alanı kullanıcı arabiriminde Şimdi çalıştır düğmesine tıklama gibi diğer tetikleyiciler.
Artımlı toplu iş yükleri için, aşağıdaki gibi tetikleyici modunu kullanarak AvailableNow
işlerinizi yapılandırın:
Python
(df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(availableNow=True)
.toTable("table_name")
)
Scala
import org.apache.spark.sql.streaming.Trigger
df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(Trigger.AvailableNow)
.toTable("table_name")
Akış iş yükleri için varsayılan tetikleyici aralığıdır processingTime ="500ms"
. Aşağıdaki örnekte bir mikro toplu işlemin 5 saniyede bir nasıl işlendiği gösterilmektedir:
Python
(df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(processingTime="5 seconds")
.toTable("table_name")
)
Scala
import org.apache.spark.sql.streaming.Trigger
df.writeStream
.option("checkpointLocation", <checkpoint-path>)
.trigger(Trigger.ProcessingTime, "5 seconds")
.toTable("table_name")
Önemli
Sunucusuz işler Yapılandırılmış Akış için Scala, sürekli mod veya zamana bağlı tetikleyici aralıklarını desteklemez. Neredeyse gerçek zamanlı alım semantiğine ihtiyacınız varsa klasik işleri kullanın.
DLT ile alım
İşler'e benzer şekilde, DLT işlem hatları tetiklenmiş veya sürekli modda çalıştırılabilir. Akış tablolarıyla neredeyse gerçek zamanlı akış semantiği için sürekli modu kullanın.
Bulut nesne depolama, Apache Kafka, Amazon Kinesis, Google Pub/Sub veya Apache Pulsar'dan akış veya artımlı toplu veri alımı yapılandırmak için akış tablolarını kullanın.
Lakeflow Connect, bağlı sistemlerden alım işlem hatlarını yapılandırmak için DLT kullanır. Bkz. Lakeflow Connect.
Gerçekleştirilmiş görünümler toplu iş yüklerine eşdeğer işlem semantiğini garanti eder, ancak sonuçları artımlı olarak hesaplamak için birçok işlemi iyileştirebilir. Bkz. gerçekleştirilmiş görünümler için artımlı yenileme.
Databricks SQL ile veri alma
Bulut nesne depolama, Apache Kafka, Amazon Kinesis, Google Pub/Sub veya Apache Pulsar'dan artımlı toplu alım yapılandırmak için akış tablolarını kullanabilirsiniz.
Delta kaynaklarından artımlı toplu işlem yapılandırmak için maddi görünümlerden yararlanabilirsiniz. Bkz. gerçekleştirilmiş görünümler için artımlı yenileme.
COPY INTO
bulut nesne depolamadaki veri dosyaları için artımlı toplu işleme için tanıdık SQL söz dizimi sağlar.
COPY INTO
davranışı, bulut nesne depolaması için akış tabloları tarafından desteklenen desenlere benzer, ancak tüm varsayılan ayarlar desteklenen tüm dosya biçimleri için eşdeğer değildir.