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.
Apache Iceberg ve Delta Lake tablolarında, 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 zamanda tabloyu sorgulamak için geçmiş bilgilerini kullanın.
Uyarı
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
Bir tabloya DESCRIBE HISTORY yapılan her yazma işlemine ilişkin işlemler, kullanıcı ve zaman damgası gibi bilgileri almak için komutunu çalıştırı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.
Uyarı
Zamanda yolculuk ve tablo geçmişi, farklı saklama eşikleri ile kontrol edilir. Bkz . Zaman yolculuğu.
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 ve Python söz dizimi ayrıntıları için Delta Lake API belgelerine bakın.
Katalog Gezgini , geçmiş sekmesinde tablo geçmişini görsel olarak gösterir.
Geçmiş şeması
İşlemin çıktısı history aşağıdaki sütunlara sahiptir.
| Column | Type | Description |
|---|---|---|
| version | long |
İşlem tarafından oluşturulan tablo sürümü. |
| timestamp | timestamp |
Bu sürüm depolandığında. |
| userId | string |
İşlemi çalıştıran kullanıcının kimliği. |
| userName | string |
İşlemi çalıştıran kullanıcının adı. |
| Operasyon | string |
Operasyonun adı. |
| işlemParametreleri | map |
İşlemin parametreleri (örneğin, koşul).) |
| iş | struct |
İşlemi çalıştıran Lakeflow işinin ayrıntıları. Yalnızca Lakeflow işinden yazılan işlemeler için doldurulur. Tersi durumda null. |
| notebook | struct |
İşlemin çalıştırıldığı Databricks not defterinin ayrıntıları. Yalnızca Databricks not defterinde oluşturulan commit’ler için doldurulur. Tersi durumda null. |
| clusterId | string |
İşlemin üzerinde çalıştırıldığı kümenin kimliği. |
| sürümüOku | long |
Yazma işlemini gerçekleştirmek için okunan tablonun sürümü. |
| isolationLevel | string |
Bu işlem için kullanılan yalıtım düzeyi. |
| isBlindAppend | boolean |
Bu işlemin verileri ekleyip eklemediği. |
| Operasyon Metrikleri | map |
İşlemin ölçümleri (örneğin, değiştirilen satır ve dosya sayısı.) |
| userMetadata | string |
Belirtilmişse, kullanıcı tanımlı kayıt meta verileri. |
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
Uyarı
- Bir tabloya aşağıdaki yöntemlerden birini kullanarak yazarsanız bazı sütunlar kullanılamaz:
- Gelecekte eklenen sütunlar her zaman son sütundan sonra eklenir.
İşlem parametrelerini anlama partitionBy
partitionBy Tablo geçmişindeki alan yalnızca bir 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 verilerin bölümlere nasıl yazıldıklarını etkilemez. Ekleme işlemlerini doğrulamak için bunu kullanmamalısınız.
Example
date sütununa göre bölümlendirilmiş bir tablo düşünün. Tabloyu oluşturduğunuzda, partitionBy doldurulur:
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 boş partitionBy bir dizi gösterilir:
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() bir yola yönelik olduğunda, bu alanda bölümlendirme sütunları görüntülenebilir; ancak bu fark uygulamaya ilişkin bir ayrıntıdır ve yazma davranışını etkilemez.
İş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.
WRITE, CREATE TABLE AS SELECT, REPLACE TABLE AS SELECT, COPY INTO
Bu işlemler için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numFiles |
Yazılan dosyaların sayısı. |
numOutputBytes |
Yazılan içeriğin bayt cinsinden boyutu. |
numOutputRows |
Yazılan satır sayısı. |
STREAMING UPDATE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numAddedFiles |
Eklenen dosya sayısı. |
numRemovedFiles |
Kaldırılan dosya sayısı. |
numOutputRows |
Yazılan satır sayısı. |
numOutputBytes |
Bayt cinsinden yazma işleminin boyutu. |
DELETE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numAddedFiles |
Eklenen dosya sayısı. Tablonun bölümleri silindiğinde veri sağlanmaz. |
numRemovedFiles |
Kaldırılan dosya sayısı. |
numDeletedRows |
Kaldırılan satır sayısı. Tablonun bölümleri silindiğinde veri sağlanmaz. |
numCopiedRows |
Dosyaları silme işleminde kopyalanan satır sayısı. |
executionTimeMs |
İş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. |
TRUNCATE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numRemovedFiles |
Kaldırılan dosya sayısı. |
executionTimeMs |
İşlemin tamamını yürütmek için geçen süre. |
MERGE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numSourceRows |
Kaynak DataFrame'deki satır sayısı. |
numTargetRowsInserted |
Hedef tabloya eklenen satır sayısı. |
numTargetRowsUpdated |
Hedef tabloda güncelleştirilen satır sayısı. |
numTargetRowsDeleted |
Hedef tabloda silinen satır sayısı. |
numTargetRowsCopied |
Kopyalanan hedef satır sayısı. |
numOutputRows |
Yazılan toplam satır sayısı. |
numTargetFilesAdded |
Havuza eklenen dosya sayısı (hedef). |
numTargetFilesRemoved |
Havuzdan kaldırılan dosyaların sayısı (hedef). |
executionTimeMs |
İş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
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numAddedFiles |
Eklenen dosya sayısı. |
numRemovedFiles |
Kaldırılan dosya sayısı. |
numUpdatedRows |
Güncelleştirilen satır sayısı. |
numCopiedRows |
Dosya güncelleme işlemi sırasında az önce kopyalanan satır sayısı. |
executionTimeMs |
İş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
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numRemovedFiles |
Kaldırılan dosya sayısı. |
CONVERT
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numConvertedFiles |
Dönüştürülen Parquet dosyalarının sayısı. |
OPTIMIZE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numAddedFiles |
Eklenen dosya sayısı. |
numRemovedFiles |
İyileştirilmiş dosya sayısı. |
numAddedBytes |
Tablo iyileştirildikten sonra eklenen bayt sayısı. |
numRemovedBytes |
Kaldırılan bayt sayısı. |
minFileSize |
Tablo iyileştirildikten sonra en küçük dosyanın boyutu. |
p25FileSize |
Tablo iyileştirildikten sonra 25. yüzdelik dilimdeki dosyanın boyutu optimize edildi. |
p50FileSize |
Tablo iyileştirildikten sonra ortanca dosya boyutu. |
p75FileSize |
Tablo optimize edildikten sonra 75. yüzdelik dilimdeki dosyanın boyutu. |
maxFileSize |
Tablo iyileştirildikten sonra en büyük dosyanın boyutu. |
CLONE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
sourceTableSize |
Kopyalanan sürümdeki kaynak tablonun bayt cinsinden boyutu. |
sourceNumOfFiles |
Kopyalanan sürümdeki kaynak tablodaki dosyaların sayısı. |
numRemovedFiles |
Önceki bir tablo değiştirildiyse hedef tablodan kaldırılan dosya sayısı. |
removedFilesSize |
Önceki bir tablo değiştirildiyse hedef tablodan kaldırılan dosyaların bayt cinsinden toplam boyutu. |
numCopiedFiles |
Yeni konuma kopyalanan dosyaların sayısı. Sığ klonlar için 0. |
copiedFilesSize |
Yeni konuma kopyalanan dosyaların bayt cinsinden toplam boyutu. Sığ klonlar için 0. |
RESTORE
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
tableSizeAfterRestore |
Geri yüklemeden sonra bayt cinsinden tablo boyutu. |
numOfFilesAfterRestore |
Geri yüklemeden sonra tablodaki dosya sayısı. |
numRemovedFiles |
Geri yükleme işlemi tarafından kaldırılan dosya sayısı. |
numRestoredFiles |
Geri yükleme sonucunda eklenen dosyaların sayısı. |
removedFilesSize |
Geri yükleme tarafından kaldırılan dosyaların bayt cinsinden boyutu. |
restoredFilesSize |
Geri yükleme tarafından eklenen dosyaların bayt cinsinden boyutu. |
VACUUM
Bu işlem için aşağıdaki ölçümler kullanılabilir:
| Ölçüm adı | Description |
|---|---|
numDeletedFiles |
Silinen dosyaların sayısı. |
numVacuumedDirectories |
VACUUM işlemi uygulanan dizinlerin sayısı. |
numFilesToDelete |
Silinecek dosya sayısı. |
Zaman yolculuğu
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:
- Makine öğrenmesi modelinin çıktısı gibi analizler, raporlar veya çıkışlar yeniden oluşturma. 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.
Uyarı
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 dönüştürülebilen 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;
Python
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. ile @vbir sürüm belirtebilirsiniz. Örnek söz dizimi için aşağıdaki koda bakın.
SQL
-- Timestamp version
SELECT * FROM people10m@20190101000000000
-- Version number
SELECT * FROM people10m@v123
Python
# Timestamp version
spark.read.table("people10m@20190101000000000")
# Version number
spark.read.table("people10m@v123")
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
VACUUMveri dosyaları silinir. - Tablo sürümleri için kontrol noktası oluşturulduktan sonra günlük dosyaları otomatik olarak silinir.
Tabloların veri saklama eşiğini artırmak için, <format> yerine delta veya iceberg koyarak aşağıdaki tablo özelliklerini yapılandırmanız gerekir:
-
<format>.logRetentionDuration = "interval <interval>": bir tablonun geçmişinin ne kadar süreyle tutulduğunu denetler. Varsayılan değer:interval 30 days.- Databricks Runtime 18.0 ve üzerinde,
logRetentionDuration,deletedFileRetentionDurationdeğ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.
- Databricks Runtime 18.0 ve üzerinde,
-
<format>.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.
Örneğin, 30 günlük geçmiş verilere erişmek için delta.deletedFileRetentionDuration = "interval 30 days" değerini, delta.logRetentionDuration için varsayılan ayarla eşleşecek şekilde ayarlayın.
Important
Veri saklama eşiğinin artırılması, daha fazla veri dosyası tutuldukçe depolama maliyetlerinizin artmasına neden olabilir.
Tablo oluşturma sırasında tablo özelliklerini belirtebilir veya bunları bir ALTER TABLE deyimle ayarlayabilirsiniz. Bkz. Tablo özellikleri referansı.
Zaman yolculuğu örnekleri
111 kullanıcısına ait bir tablodaki yanlışlıkla yapılan silme işlemlerini düzeltmek için:
INSERT INTO my_table
SELECT * FROM my_table TIMESTAMP AS OF date_sub(current_date(), 1)
WHERE userId = 111
Tabloda yanlışlıkla yapılan yanlış güncelleştirmeleri düzeltmek için:
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ı sorgulamak için:
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
İşlem günlüğü denetim noktaları
İşlem günlüğü, tablo verilerinin yanı sıra işlem günlüğü dizininde tablo sürümlerini JSON dosyaları olarak kaydeder.
Denetim noktası sorgulamasını iyileştirmek için tablo sürümleri Parquet denetim noktası dosyalarına toplanır ve bu da tablo geçmişinin tüm JSON sürümlerini okuma gereksinimini önleyerek performansı artırır. Kullanıcıların denetim noktalarıyla doğrudan etkileşim kurması gerekmez.
Azure Databricks, veri boyutu ve iş yükü için denetim noktası oluşturma sıklığını iyileştirir. Denetim noktası sıklığı bildirimde bulunmadan değiştirilebilir.
Tabloyu önceki bir duruma geri yükleme
RESTORE Bu senaryolar da dahil olmak üzere bir tabloyu önceki bir sürüme veya zaman damgasına geri yüklemek için komutunu kullanın:
- Zaten geri yüklenmiş bir tabloyu geri yükleyebilirsiniz.
- Kopyalanmış bir tabloyu geri yükleyebilirsiniz.
Aşağıdaki gereksinimleri göz önünde bulundurun:
- Tabloyu geri yüklemek için tablo için izniniz olmalıdır
MODIFY. - Veri dosyaları el ile veya tarafından
VACUUMsilindikten sonra, tabloyu bu dosyalara başvuran 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. - Zaman damgasına göre geri yüklemek için
yyyy-MM-dd HH:mm:ssveyayyyy-MM-ddbiçimlerini kullanın.
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.
Akış davranışı
Geri yükleme, veri değiştiren bir işlemdir ve aşağı akış iş yükleri için yinelenen verilere neden olabilir.
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 aşağı akış iş yükleri için, geri yükleme işlemi tarafından eklenen veri değişikliği günlüğü 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ü | Operation | 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(/path/to/file-3, dataChange = false), RemoveFile(/path/to/file-1), RemoveFile(/path/to/file-2) |
Kayıt yok.
OPTIMIZE sıkıştırma, tablodaki verileri değiştirmez. |
| 3 | RESTORE(version=1) |
RemoveFile(/path/to/file-3), AddFile(/path/to/file-1, dataChange = true), AddFile(/path/to/file-2, dataChange = true) |
(ad = Viktor, yaş = 29), (ad = George, yaş = 55), (ad = George, yaş = 39) |
Önceki örnekte, RESTORE komutu, tablonun 0 ve 1 sürümleri okunurken daha önce görülen güncelleştirmelerle sonuçlanır. Akış sorgusu bu tabloyu yeniden okursa, bu dosyalar yeni eklenen veriler olarak kabul edilir ve yeniden işlenir.
Ölçümleri geri yükleme
Tamamlandıktan sonra, RESTORE aşağıdaki ölçümleri tek satırlık DataFrame olarak raporlar:
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.
Son işleme sürümünü bulma
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.
<format> öğesini, tablonuzun biçimine bağlı olarak delta veya iceberg ile değiştirin.
Örneğin:
SQL
SET spark.databricks.delta.lastCommitVersionInSession
Python
spark.conf.get("spark.databricks.delta.lastCommitVersionInSession")
Scala
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.
Uyarı
Aynı SparkSession şeyi birden çok iş parçacığında paylaşırsanız, bir değişkeni birden çok iş parçacığı arasında paylaşmaya benzer. Yapılandırma değerinde eşzamanlı güncelleştirmeler için yarış koşullarıyla karşılaşabilirsiniz.