DELTA'YA DÖNÜŞTÜR
Şunun için geçerlidir: Databricks SQL denetimi yes Databricks Runtime
Var olan bir Parquet tablosunu yerinde delta tablosuna dönüştürür. Bu komut dizindeki tüm dosyaları listeler, bu dosyaları izleyen bir Delta Lake işlem günlüğü oluşturur ve tüm Parquet dosyalarının alt bilgilerini okuyarak veri şemasını otomatik olarak çıkarsar. Dönüştürme işlemi, dönüştürülen Delta tablosunda sorgu performansını geliştirmek için istatistikleri toplar. Tablo adı sağlarsanız, meta veri deposu da tablonun artık bir Delta tablosu olduğunu yansıtacak şekilde güncelleştirilir.
Bu komut, temel dosya biçimi Parquet olan Iceberg tablolarının dönüştürülmesini destekler. Bu durumda dönüştürücü, Iceberg tablosunun yerel dosya bildirimi, şema ve bölümleme bilgilerini temel alarak Delta Lake işlem günlüğünü oluşturur.
Sözdizimi
CONVERT TO DELTA table_name [ NO STATISTICS ] [ PARTITIONED BY clause ]
Parametre
-
İsteğe bağlı olarak nitelenmiş bir tablo tanımlayıcısı ya da ya da dosya dizini yolu
parquet
iceberg
. Ad , zamana bağlı belirtim içermemelidir. Iceberg tablolarında, yönetilen buzdağı tablolarının dönüştürülmesi desteklenmediğinden yalnızca yolları kullanabilirsiniz. İSTATISTIĞI YOK
Dönüştürme işlemi sırasında istatistik toplamayı atlayın ve dönüştürmeyi daha hızlı tamamlayın. Tablo Delta Lake'e dönüştürüldükten sonra veri düzenini yeniden düzenlemek ve istatistik oluşturmak için kullanabilirsiniz
OPTIMIZE ZORDER BY
.-
Oluşturulan tabloyu belirtilen sütunlara göre bölümleme. Yol olduğunda
table_name
,PARTITIONED BY
bölümlenmiş veriler için gereklidir.table_name
tam tablo tanımlayıcısı olduğunda yanPARTITIONED BY
tümce isteğe bağlıdır ve bölüm belirtimi meta veri deposundan yüklenir. Her iki yaklaşımda da, dizin yapısı sağlanan veya yüklenenPARTITIONED BY
belirtime uymuyorsa dönüştürme işlemi durdurulup bir özel durum oluşturur.Not
Databricks Runtime 11.1 ve altında,
PARTITIONED BY
tüm bölümlenmiş veriler için gerekli bir bağımsız değişkendir.
Örnekler
Not
Meta veri deposuna kayıtlı Iceberg tabloları veya tabloları için bölümleme bilgileri sağlamanız gerekmez.
CONVERT TO DELTA database_name.table_name; -- only for Parquet tables
CONVERT TO DELTA parquet.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`
PARTITIONED BY (date DATE); -- if the table is partitioned
CONVERT TO DELTA iceberg.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/table`; -- uses Iceberg manifest for metadata
Uyarılar
Delta Lake tarafından izlenmeyen tüm dosyalar görünmez ve çalıştırdığınızda VACUUM
silinebilir. Dönüştürme işlemi sırasında veri dosyalarını güncelleştirmekten veya eklemekten kaçınmanız gerekir. Tablo dönüştürüldükten sonra tüm yazmaların Delta Lake üzerinden geçtiğinden emin olun.
Birden çok dış tablonun aynı temel Parquet dizinini paylaşması mümkündür. Bu durumda, dış tablolardan birinde çalıştırırsanız CONVERT
, temel alınan dizin Parquet'ten Delta Lake'e dönüştürüldüğünden diğer dış tablolara erişemezsiniz. Bu dış tabloları yeniden sorgulamak veya yazmak için, bunlar üzerinde de çalıştırmanız CONVERT
gerekir.
CONVERT
şema ve tablo özellikleri gibi katalog bilgilerini Delta Lake işlem günlüğüne doldurur. Temel alınan dizin zaten Delta Lake'e dönüştürüldüyse ve meta verileri katalog meta verilerinden farklıysa, bir convertMetastoreMetadataMismatchException
oluşturulur.
Databricks Runtime kullanırken Delta Lake işlem günlüğündeki mevcut meta verilerin üzerine yazmak istiyorsanız CONVERT
SQL yapılandırmasını spark.databricks.delta.convert.metadataCheck.enabled
false olarak ayarlayın.
Dönüştürmeyi geri alma
veya OPTIMIZE
gibi DELETE
veri dosyalarını değiştirebilen Delta Lake işlemleri gerçekleştirdiyseniz:
- Çöp toplama için aşağıdaki komutu çalıştırın:
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
<path-to-table>/_delta_log
Dizini silin.