DELTA'YA DÖNÜŞTÜR

Şunun için geçerlidir:evet olarak işaretlendi Databricks SQL denetimi yes Databricks Runtime olarak işaretlendi

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

  • Table_name

    İsteğe bağlı olarak nitelenmiş bir tablo tanımlayıcısı ya da ya da dosya dizini yolu parqueticeberg . 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 .

  • BÖLÜMLENDİ

    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 yan PARTITIONED 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üklenen PARTITIONED 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 VACUUMsilinebilir. 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:

  1. Çöp toplama için aşağıdaki komutu çalıştırın:
VACUUM delta.`<path-to-table>` RETAIN 0 HOURS
  1. <path-to-table>/_delta_log Dizini silin.