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.
Tabloyu değiştiren her işlem yeni bir tablo sürümü oluşturur. Zaman yolculuğu kullanarak işlemleri denetlemek, bir tabloyu geri almak veya belirli bir noktada tabloyu sorgulamak için geçmiş bilgilerini kullanın.
Not
Databricks, veri arşivleme için uzun vadeli bir yedekleme çözümü olarak tablo geçmişinin kullanılmasını önermez. Hem veri hem de günlük saklama yapılandırmalarını daha büyük bir değere ayarlamadıysanız, zaman yolculuğu işlemleri için yalnızca son 7 günü kullanın.
Tablo geçmişini alma
komutunu çalıştırarak history her bir tabloya yazma işlemi, kullanıcı ve zaman damgası gibi bilgileri alın. İşlemler ters kronolojik sırayla döndürülür.
Tablo geçmişi saklama, varsayılan olarak 30 gün olan tablo ayarı logRetentionDurationtarafından belirlenir.
Not
Zaman yolculuğu ve tablo geçmişi, farklı bekletme eşikleri tarafından kontrol edilmektedir. Bkz. Zaman yolculuğu nedir?.
DESCRIBE HISTORY table_name -- get the full history of the table
DESCRIBE HISTORY table_name LIMIT 1 -- get the last operation only
Spark SQL söz dizimi ayrıntıları için bkz. DESCRIBE HISTORY.
Scala/Java/Python söz dizimi ayrıntıları için Delta Lake API belgelerine bakın.
Katalog Gezgini , bu ayrıntılı tablo bilgilerinin ve geçmişinin görsel bir görünümünü sağlar. Tablo şemasına ve örnek verilere ek olarak, Geçmiş sekmesine tıklayarak DESCRIBE HISTORY ile görüntülenen tablo geçmişini görebilirsiniz.
Geçmiş şeması
İşlemin çıktısı history aşağıdaki sütunlara sahiptir.
| Köşe yazısı | Türü | Açıklama |
|---|---|---|
| sürüm | uzun | İşlem tarafından oluşturulan tablo sürümü. |
| Tarih damgası | Tarih damgası | Bu sürüm depolandığında. |
| userId (kullanıcı kimliği) | Dize | İşlemi çalıştıran kullanıcının kimliği. |
| kullanıcı adı | Dize | İşlemi çalıştıran kullanıcının adı. |
| Operasyon | Dize | İşlemin adı. |
| işlemParametreleri | harita | İşlemin parametreleri (örneğin, koşul.) |
| iş | yapı | İşlemi çalıştıran işin ayrıntıları. |
| dizüstü bilgisayar | yapı | İşlemin çalıştırıldığı not defterinin ayrıntıları. |
| kümeKimliği | Dize | İşlemin üzerinde çalıştırıldığı kümenin kimliği. |
| sürümüOku | uzun | Yazma işlemini gerçekleştirmek için okunan tablonun sürümü. |
| izolasyon seviyesi | Dize | Bu işlem için kullanılan yalıtım düzeyi. |
| isBlindAppend | Boolean | Bu işlemin verileri ekleyip eklemediği. |
| operasyon metrikleri | harita | İşlemin ölçümleri (örneğin, değiştirilen satır ve dosya sayısı.) |
| kullanıcı meta verisi | Dize | Kullanıcı tanımlı işleme meta verileri, belirtilmişse |
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|version| timestamp|userId|userName|operation| operationParameters| job|notebook|clusterId|readVersion| isolationLevel|isBlindAppend| operationMetrics|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
| 5|2019-07-29 14:07:47| ###| ###| DELETE|[predicate -> ["(...|null| ###| ###| 4|WriteSerializable| false|[numTotalRows -> ...|
| 4|2019-07-29 14:07:41| ###| ###| UPDATE|[predicate -> (id...|null| ###| ###| 3|WriteSerializable| false|[numTotalRows -> ...|
| 3|2019-07-29 14:07:29| ###| ###| DELETE|[predicate -> ["(...|null| ###| ###| 2|WriteSerializable| false|[numTotalRows -> ...|
| 2|2019-07-29 14:06:56| ###| ###| UPDATE|[predicate -> (id...|null| ###| ###| 1|WriteSerializable| false|[numTotalRows -> ...|
| 1|2019-07-29 14:04:31| ###| ###| DELETE|[predicate -> ["(...|null| ###| ###| 0|WriteSerializable| false|[numTotalRows -> ...|
| 0|2019-07-29 14:01:40| ###| ###| WRITE|[mode -> ErrorIfE...|null| ###| ###| null|WriteSerializable| true|[numFiles -> 2, n...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
Not
- Aşağıdaki yöntemleri kullanarak bir tabloya yazarsanız diğer sütunlardan birkaçı kullanılamaz:
- Gelecekte eklenen sütunlar her zaman son sütundan sonra eklenir.
İşlem parametrelerini anlama partitionBy
Bu partitionBy alan yalnızca tablonun bölüm şemasını tanımlayan veya değiştiren CREATE ve OVERWRITE işlemleri için anlamlıdır.
Var olan tablolara ekleme işlemleri (APPEND, INSERT, , UPDATEDELETE, MERGE) için bu alan, kullanılan yazma yöntemine ([]vs.save()) bağlı olarak boş bir dizi .saveAsTable() veya bölüm sütunları gösterebilir. Bu tutarsızlık beklenen bir davranıştır ve yazmaları doğrulamak için kullanılmamalıdır.
Önemli
Ekleme işlemlerini doğrulamak için geçmişe güvenmeyin partitionBy . Değer uygulama ayrıntılarına göre değişir, ancak verilerin bölümlere nasıl yazdığını etkilemez.
Example
date sütununa göre bölümlendirilmiş bir tablo düşünün.
# Initial table creation - partitionBy is populated
df.write.format("delta") \
.partitionBy("date") \
.saveAsTable("sales_data")
Geçmişe yönelik CREATE işlemi şunları gösterir:
operationParameters: {
"mode": "ErrorIfExists",
"partitionBy": "[\"date\"]"
}
Bu tabloya veri eklediğinizde:
# Subsequent append - partitionBy shows empty
new_df.write.format("delta") \
.mode("append") \
.saveAsTable("sales_data")
APPEND işlemi şunları gösterir:
operationParameters: {
"mode": "Append",
"partitionBy": "[]"
}
Boş partitionBy değer beklenir. Veriler yine de tablonun mevcut bölüm şemasına göre doğru bölümlere yazılır.
.save()'in bir yol için bu alanda "bölüm sütunları" gösterebileceğini, ancak bu farkın bir uygulama ayrıntısı olduğunu ve yazma davranışını etkilemediğini unutmayın.
İşlem ölçümleri
İşlem, history sütun haritasında operationMetrics işlem metrikleri koleksiyonu döndürür.
Aşağıdaki tablolarda harita anahtarı tanımları işleme göre listelenmektedir.
| İşlem | Ölçüm adı | Açıklama |
|---|---|---|
| YAZ, CREATE TABLE'ı SELECTOLARAK, DEĞİŞTİR TABLE'yi SELECTOLARAK, COPY INTO | ||
| numFiles | Yazılan dosya sayısı. | |
| numOutputBytes | Yazılan içeriğin bayt cinsinden boyutu. | |
| numOutputRows | Yazılan satır sayısı. | |
| AKıŞ UPDATE | ||
| eklenenDosyaSayisi | Eklenen dosya sayısı. | |
| kaldırılanDosyaSayısı | Kaldırılan dosya sayısı. | |
| numOutputRows | Yazılan satır sayısı. | |
| numOutputBytes | Yazma boyutu, bayt olarak. | |
| SİL | ||
| eklenenDosyaSayisi | Eklenen dosya sayısı. Tablonun bölümleri silindiğinde veri sağlanmaz. | |
| kaldırılanDosyaSayısı | Kaldırılan dosya sayısı. | |
| numDeletedRows (silinenSatırSayısı) | Kaldırılan satır sayısı. Tablonun bölümleri silindiğinde sağlanmaz. | |
| kopyalananSatırSayısı | Dosyaları silme işleminde kopyalanan satır sayısı. | |
| çalışmaSüresiMs | İşlemin tamamını yürütmek için geçen süre. | |
| scanTimeMs | Dosyaları eşleşmeler için taramak için geçen süre. | |
| rewriteTimeMs | Eşleşen dosyaları yeniden yazmak için geçen süre. | |
| Kısaltmak | ||
| kaldırılanDosyaSayısı | Kaldırılan dosya sayısı. | |
| çalışmaSüresiMs | İşlemin tamamını yürütmek için geçen süre. | |
| BİRLEŞMEK | ||
| numSourceRows (kaynak satır sayısı) | Kaynak DataFrame'deki satır sayısı. | |
| numTargetRowsInserted | Hedef tabloya eklenen satır sayısı. | |
| Hedef Satırların Güncellenen Sayısı | Hedef tabloda güncelleştirilen satır sayısı. | |
| SilinenHedefSatırSayısı | Hedef tabloda silinen satır sayısı. | |
| numTargetRowsCopied (Kopyalanan hedef satır sayısı) | Kopyalanan hedef satır sayısı. | |
| numOutputRows | Yazılan toplam satır sayısı. | |
| Hedef Dosyaların Sayısı Eklendi | Havuza (hedef) eklenen dosya sayısı. | |
| numHedefDosyalarSilindi | Hedef (sink) konumundan kaldırılan dosya sayısı. | |
| çalışmaSüresiMs | İşlemin tamamını yürütmek için geçen süre. | |
| scanTimeMs | Dosyaları eşleşmeler için taramak için geçen süre. | |
| rewriteTimeMs | Eşleşen dosyaları yeniden yazmak için geçen süre. | |
| UPDATE | ||
| eklenenDosyaSayisi | Eklenen dosya sayısı. | |
| kaldırılanDosyaSayısı | Kaldırılan dosya sayısı. | |
| GüncellenenSatırSayısı | Güncellenen satır sayısı. | |
| kopyalananSatırSayısı | Dosyaları güncelleme işleminde yeni kopyalanan satır sayısı. | |
| çalışmaSüresiMs | İşlemin tamamını yürütmek için geçen süre. | |
| scanTimeMs | Dosyaları eşleşmeler için taramak için geçen süre. | |
| rewriteTimeMs | Eşleşen dosyaları yeniden yazmak için geçen süre. | |
| FSCK | kaldırılanDosyaSayısı | Kaldırılan dosya sayısı. |
| DÖNÜŞTÜRMEK | dönüştürülenDosyaSayısı | Dönüştürülen Parquet dosyalarının sayısı. |
| OPTIMIZE | ||
| eklenenDosyaSayisi | Eklenen dosya sayısı. | |
| kaldırılanDosyaSayısı | İyileştirilmiş dosya sayısı. | |
| eklenenBaytSayısı | Tablo iyileştirildikten sonra eklenen bayt sayısı. | |
| Silinen Bayt Sayısı | Kaldırılan bayt sayısı. | |
| minFileSize | Tablo iyileştirildikten sonra en küçük dosyanın boyutu. | |
| p25FileSize | Tablo iyileştirilip tamamlandığında, 25. yüzdelik dilimdeki dosyanın boyutu. | |
| p50FileSize | Tablo iyileştirildikten sonra ortanca dosya boyutu. | |
| p75FileSize | Tablo optimize edildikten sonra 75. yüzdelik dilim dosyanın boyutu. | |
| maxFileSize | Tablo iyileştirildikten sonra en büyük dosyanın boyutu. | |
| KLON | ||
| kaynakTabloBoyutu | Kopyalanan sürümdeki kaynak tablonun bayt cinsinden boyutu. | |
| sourceNumOfFiles | Kopyalanan sürümdeki kaynak tablodaki dosya sayısı. | |
| kaldırılanDosyaSayısı | Önceki bir tablo değiştirildiyse hedef tablodan kaldırılan dosya sayısı. | |
| kaldırılanDosyalarBoyutu | Önceki bir tablo değiştirildiyse hedef tablodan kaldırılan dosyaların bayt cinsinden toplam boyutu. | |
| Kopyalanan Dosya Sayısı (numCopiedFiles) | Yeni konuma kopyalanan dosyaların sayısı. Sığ klonlar için 0. | |
| kopyalananDosyalarBoyutu | Yeni konuma kopyalanan dosyaların bayt cinsinden toplam boyutu. Sığ klonlar için 0. | |
| RESTORE | ||
| geri yükleme sonrası tablo boyutu | Geri yüklemeden sonra bayt cinsinden tablo boyutu. | |
| Geri Yükleme Sonrası Dosya Sayısı | Geri yüklemeden sonra tablodaki dosya sayısı. | |
| kaldırılanDosyaSayısı | Geri yükleme işlemi tarafından kaldırılan dosya sayısı. | |
| numGeriYüklenenDosyalar | Geri yükleme sonucunda eklenen dosya sayısı. | |
| kaldırılanDosyalarBoyutu | Geri yükleme tarafından kaldırılan dosyaların bayt cinsinden boyutu. | |
| geri yüklenen dosyaların boyutu | Geri yükleme tarafından eklenen dosyaların bayt cinsinden boyutu. | |
| VACUUM | ||
| silinmişDosyaSayısı | Silinen dosya sayısı. | |
| numVakumlanmışDizinler | Vakumlanmış dizin sayısı. | |
| silinecekDosyaSayisi | Silinecek dosya sayısı. |
Zaman yolculuğu nedir?
Zaman yolculuğu, zaman damgasına veya tablo sürümüne göre (işlem günlüğünde kaydedildiği gibi) önceki tablo sürümlerini sorgulamayı destekler. Aşağıdaki gibi uygulamalar için zaman yolculuğu kullanabilirsiniz:
- Çözümlemeleri, raporları veya çıkışları yeniden oluşturma (örneğin, bir makine öğrenmesi modelinin çıktısı). Bu, özellikle düzenlemeye tabi sektörlerde hata ayıklama veya denetim için yararlı olabilir.
- Karmaşık zamana bağlı sorgular yazma.
- Verilerinizdeki hataları düzeltme.
- Hızlı değişen tablolara yönelik bir dizi sorgu için anlık görüntü yalıtımı sağlama.
Önemli
Databricks Runtime 18.0 ve üzeri sürümlerde, tablo özelliğinden (varsayılan 7 gün) daha deletedFileRetentionDuration eski bir sürüm isteyen zaman yolculuğu sorguları engellenir. Unity Kataloğu yönetilen tabloları için bu, Databricks Runtime 12.2 ve üzeri için geçerlidir.
Zaman yolculuğu söz dizimi
Tablo adı belirtiminin arkasına yan tümce ekleyerek zaman yolculuğu içeren bir tabloyu sorgularsınız.
-
timestamp_expressionşu türlerden herhangi biri olabilir:-
'2018-10-18T22:15:12.013Z', başka bir ifadeyle zaman damgasına dönüştürülebilen bir dizedir cast('2018-10-18 13:36:32 CEST' as timestamp)-
'2018-10-18', yani bir tarih dizesi current_timestamp() - interval 12 hoursdate_sub(current_date(), 1)- Zaman damgasına atanabilen veya atanabilecek diğer tüm ifadeler
-
-
versionDESCRIBE HISTORY table_spec'in çıkışından elde edilebilen uzun bir değerdir.
Ne timestamp_expression ne de version alt sorgu olabilir.
Yalnızca tarih veya zaman damgası dizeleri kabul edilir. Örneğin, "2019-01-01" ve "2019-01-01T00:00:00.000Z". Örnek söz dizimi için aşağıdaki koda bakın.
SQL
SELECT * FROM people10m TIMESTAMP AS OF '2018-10-18T22:15:12.013Z';
SELECT * FROM people10m VERSION AS OF 123;
Piton
df1 = spark.read.option("timestampAsOf", "2019-01-01").table("people10m")
df2 = spark.read.option("versionAsOf", 123).table("people10m")
Tablo adının bir parçası olarak zaman damgasını veya sürümü belirtmek için @ söz dizimini de kullanabilirsiniz. Zaman damgası yyyyMMddHHmmssSSS formatında olmalıdır. Bir v sürümünün önüne ekleyerek @'dan sonra bir sürüm belirtebilirsiniz. Örnek söz dizimi için aşağıdaki koda bakın.
SQL
SELECT * FROM people10m@20190101000000000
SELECT * FROM people10m@v123
Piton
spark.read.table("people10m@20190101000000000")
spark.read.table("people10m@v123")
İşlem günlüğü denetim noktaları nedir?
Tablo sürümleri, tablo verileriyle birlikte depolanan işlem günlüğü dizininde JSON dosyaları olarak kaydedilir. Denetim noktası sorgulamasını iyileştirmek için tablo sürümleri Parquet denetim noktası dosyalarına toplanır ve tablo geçmişinin tüm JSON sürümlerini okuma gereksinimini önler. Azure Databricks, veri boyutu ve iş yükü için denetim noktası oluşturma sıklığını iyileştirir. Kullanıcıların denetim noktalarıyla doğrudan etkileşim kurması gerekmez. Denetim noktası sıklığı bildirimde bulunmadan değiştirilebilir.
Zaman yolculuğu sorguları için veri saklamayı yapılandırma
Önceki bir tablo sürümünü sorgulamak için, bu sürüm için hem günlüğü hem de veri dosyalarını tutmanız gerekir.
Bir tabloda çalıştırıldığında VACUUM veri dosyaları silinir. Günlük dosyasını kaldırma işlemi, tablo sürümleri denetlendikten sonra otomatik olarak yönetilir.
VACUUM çoğu tablo düzenli olarak bunlara karşı çalıştırıldığı için, belirli bir zamandaki sorgular VACUUM varsayılan olarak 7 gün olan saklama eşiğine uygun olmalıdır.
Tabloların veri saklama eşiğini artırmak için aşağıdaki tablo özelliklerini yapılandırmanız gerekir:
-
delta.logRetentionDuration = "interval <interval>": bir tablonun geçmişinin ne kadar süreyle tutulduğunu denetler. Varsayılan değer:interval 30 days. -
delta.deletedFileRetentionDuration = "interval <interval>": geçerli tablo sürümünde artık başvurulmayan veri dosyalarını kaldırmak için kullanılan eşiğiVACUUMbelirler. Varsayılan değer:interval 7 days.
Tablo oluşturma sırasında tablo özelliklerini belirtebilir veya bunları bir ALTER TABLE deyimle ayarlayabilirsiniz. Bkz. Tablo özellikleri referansı.
Not
Databricks Runtime 18.0 ve üzerinde, logRetentionDuration, deletedFileRetentionDuration değerinden büyük veya buna eşit olmalıdır. Unity Kataloğu yönetilen tabloları için bu, Databricks Runtime 12.2 ve üzeri için geçerlidir.
30 günlük geçmiş verilere erişmek için ayarlayın delta.deletedFileRetentionDuration = "interval 30 days" (için delta.logRetentionDurationvarsayılan ayarla eşleşir).
Veri saklama eşiğinin artırılması, daha fazla veri dosyası tutuldukçe depolama maliyetlerinizin artmasına neden olabilir.
Tabloyu önceki bir duruma geri yükleme
komutunu kullanarak RESTORE tabloyu önceki durumuna geri yükleyebilirsiniz. Tablolar, eski bir duruma geri yüklenmesini sağlayan geçmiş sürümleri dahili olarak korur.
Önceki duruma veya önceki durumun oluşturulduğu zaman damgasına karşılık gelen bir sürüm, RESTORE komutu tarafından seçenekler olarak desteklenir.
Önemli
- Zaten geri yüklenmiş bir tabloyu geri yükleyebilirsiniz.
- Kopyalanmış bir tabloyu geri yükleyebilirsiniz.
- Geri yüklenmekte olan tablo üzerinde
MODIFYizniniz olmalıdır. - Bir tabloyu, veri dosyalarının el ile veya tarafından
vacuumsilindiği eski bir sürüme geri yükleyemezsiniz. Bu sürüme kısmen geri yükleme,spark.sql.files.ignoreMissingFilestrueolarak ayarlandıysa yine de mümkündür. - Önceki bir duruma geri yüklemek için zaman damgası biçimi şeklindedir
yyyy-MM-dd HH:mm:ss. Yalnızca bir tarih(yyyy-MM-dd) dizesi sağlanması da desteklenir.
RESTORE TABLE target_table TO VERSION AS OF <version>;
RESTORE TABLE target_table TO TIMESTAMP AS OF <timestamp>;
Söz dizimi ayrıntıları için bkz. RESTORE.
Önemli
Geri yükleme, veri değiştiren bir işlem olarak kabul edilir.
RESTORE komutu tarafından eklenen günlük girdileri dataChange durumunu true olarak ayarlanmış biçimde içerir. Tablo güncelleştirmelerini işleyen Yapılandırılmış akış işi gibi bir aşağı akış uygulaması varsa, geri yükleme işlemi tarafından eklenen veri değişikliği günlük girişleri yeni veri güncelleştirmeleri olarak kabul edilir ve bunların işlenmesi yinelenen verilere neden olabilir.
Örneğin:
| Tablo sürümü | İşlem | Kayıt güncellemeleri | Veri değişikliği günlük güncellemelerindeki kayıtlar |
|---|---|---|---|
| 0 | INSERT | AddFile(/path/to/file-1, dataChange = true) | (ad = Viktor, yaş = 29, (ad = George, yaş = 55) |
| 1 | INSERT | AddFile(/path/to/file-2, dataChange = true) | (name = George, age = 39) |
| 2 | OPTIMIZE | AddFile(/dizin/dosya-3, veriDeğişimi = false), RemoveFile(/dizin/dosya-1), RemoveFile(/dizin/dosya-2) | (Sıkıştırmayı iyileştir olarak hiçbir kayıt tablodaki verileri değiştirmez) |
| 3 | RESTORE(sürüm=1) | RemoveFile(/yol/dosya-3) // Dosyayı sil, AddFile(/yol/dosya-1, veriDegisimi = dogru) // Dosya ekle, veri değişiyor, AddFile(/yol/dosya-2, veriDegisimi = dogru) // Dosya ekle, veri değişiyor | (ad = Viktor, yaş = 29), (ad = George, yaş = 55), (ad = George, yaş = 39) |
Önceki örnekte RESTORE komutu, tablo sürümü 0 ve 1 okunurken zaten görülmüş olan güncelleştirmelere neden olur. Bir akış sorgusu bu tabloyu okuyorsa, bu dosyalar yeni eklenen veriler olarak kabul edilir ve yeniden işlenir.
Ölçümleri geri yükleme
RESTORE işlem tamamlandıktan sonra aşağıdaki ölçümleri tek satırlık DataFrame olarak bildirir:
table_size_after_restore: Geri yüklemeden sonra tablonun boyutu.num_of_files_after_restore: Geri yüklemeden sonra tablodaki dosya sayısı.num_removed_files: Tablodan kaldırılan (mantıksal olarak silinen) dosya sayısı.num_restored_files: Geri dönme nedeniyle geri yüklenen dosyaların sayısı.removed_files_size: Tablodan kaldırılan dosyaların bayt cinsinden toplam boyutu.restored_files_size: Geri yüklenen dosyaların bayt cinsinden toplam boyutu.
Zaman yolculuğu kullanma örnekleri
Kullanıcının
111tabloya yanlışlıkla silmelerini düzeltin:INSERT INTO my_table SELECT * FROM my_table TIMESTAMP AS OF date_sub(current_date(), 1) WHERE userId = 111Tabloya yanlışlıkla yapılan yanlış güncelleştirmeler düzeltilir:
MERGE INTO my_table target USING my_table TIMESTAMP AS OF date_sub(current_date(), 1) source ON source.userId = target.userId WHEN MATCHED THEN UPDATE SET *Geçen hafta eklenen yeni müşterilerin sayısını sorgula.
SELECT ( SELECT count(distinct userId) FROM my_table ) - ( SELECT count(distinct userId) FROM my_table TIMESTAMP AS OF date_sub(current_date(), 7) ) AS new_customers
Spark oturumunda son işlemenin sürümünü nasıl bulabilirim?
Geçerli SparkSession tarafından tüm iş parçacıklarında ve tüm tablolarda yazılan son işlemenin sürüm numarasını almak için SQL yapılandırmasını sorgulayın.
Not
Apache Iceberg tabloları için spark.databricks.iceberg.lastCommitVersionInSession yerine spark.databricks.delta.lastCommitVersionInSession kullanın.
SQL
SET spark.databricks.delta.lastCommitVersionInSession
Piton
spark.conf.get("spark.databricks.delta.lastCommitVersionInSession")
Scala programlama dili
spark.conf.get("spark.databricks.delta.lastCommitVersionInSession")
SparkSession tarafından herhangi bir işlem yapılmadıysa, anahtarı sorgulamak boş bir değer döndürür.
Not
Aynı SparkSession değeri birden çok iş parçacığında paylaşıyorsanız, bu bir değişkeni birden çok iş parçacığı arasında paylaşmaya benzer; yapılandırma değeri eşzamanlı olarak güncelleştirildikçe yarış koşullarına çarpabilirsiniz.