Mengkloning parquet dan tabel Iceberg secara bertahap ke Delta Lake

Anda dapat menggunakan fungsionalitas kloning Azure Databricks untuk mengonversi data secara bertahap dari sumber data Parquet atau Iceberg ke tabel Delta terkelola atau eksternal.

KlonIng Azure Databricks untuk Parquet dan Iceberg menggabungkan fungsionalitas yang digunakan untuk mengkloning tabel Delta dan mengonversi tabel ke Delta Lake. Artikel ini menjelaskan kasus penggunaan dan batasan untuk fitur ini dan memberikan contoh.

Penting

Fitur ini ada di Pratinjau Publik.

Catatan

Fitur ini memerlukan Databricks Runtime 11.3 atau lebih tinggi.

Kapan menggunakan kloning untuk penyerapan data Parquet atau Iceberg secara bertahap

Azure Databricks menyediakan sejumlah opsi untuk menyerap data ke dalam lakehouse. Databricks merekomendasikan penggunaan kloning untuk menyerap data Parquet atau Iceberg dalam situasi berikut:

Catatan

Tabel sumber istilah mengacu pada tabel dan file data yang akan dikloning, sementara tabel target mengacu pada tabel Delta yang dibuat atau diperbarui oleh operasi.

  • Anda melakukan migrasi dari Parquet atau Iceberg ke Delta Lake, tetapi perlu terus menggunakan tabel sumber.
  • Anda perlu mempertahankan sinkronisasi khusus penyerapan antara tabel target dan tabel sumber produksi yang menerima penambalan, pembaruan, dan penghapusan.
  • Anda ingin membuat rekam jepret data sumber yang sesuai dengan ACID untuk pelaporan, pembelajaran mesin, atau ETL batch.

Apa sintaks untuk kloning?

Kloning untuk Parquet dan Iceberg menggunakan sintaks dasar yang sama yang digunakan untuk mengkloning tabel Delta, dengan dukungan untuk kloning dangkal dan dalam. Untuk informasi selengkapnya, lihat Jenis kloning.

Databricks merekomendasikan penggunaan kloning secara bertahap untuk sebagian besar beban kerja. Mengkloning dukungan untuk Parquet dan Iceberg menggunakan sintaks SQL.

Catatan

Kloning untuk Parquet dan Iceberg memiliki persyaratan dan jaminan yang berbeda dari kloning atau konversi ke Delta. Lihat Persyaratan dan batasan untuk mengkloning tabel Parquet dan Iceberg.

Untuk mengkloning dalam tabel Parquet atau Iceberg menggunakan jalur file, gunakan sintaks berikut:

CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;

Untuk mengkloning tabel Parquet atau Iceberg dengan dangkal menggunakan jalur file, gunakan sintaks berikut:

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;

Anda juga dapat membuat klon mendalam atau dangkal untuk tabel Parquet yang terdaftar ke metastore, seperti yang ditunjukkan dalam contoh berikut:

CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;

Persyaratan dan batasan untuk mengkloning tabel Parquet dan Iceberg

Baik menggunakan klon mendalam atau dangkal, perubahan yang diterapkan pada tabel target setelah kloning terjadi tidak dapat disinkronkan kembali ke tabel sumber. Sinkronisasi bertahap dengan kloning bersifat searah, memungkinkan perubahan pada tabel sumber diterapkan secara otomatis ke tabel Delta target.

Batasan tambahan berikut berlaku saat menggunakan kloning dengan tabel Parquet dan Iceberg:

  • Anda harus mendaftarkan tabel Parquet dengan partisi ke katalog seperti metastore Apache Hive sebelum mengkloning dan menggunakan nama tabel untuk mengidenfitas tabel sumber. Anda tidak dapat menggunakan sintaks klon berbasis jalur untuk tabel Parquet dengan partisi.
  • Anda tidak dapat mengkloning tabel Iceberg yang mengalami evolusi partisi.
  • Anda tidak dapat mengkloning tabel merge-on-read Iceberg yang telah mengalami pembaruan, penghapusan, atau penggabungan.
  • Berikut ini adalah batasan untuk mengkloning tabel Iceberg dengan partisi yang ditentukan pada kolom terpotong:
    • Dalam Databricks Runtime 12.2 LTS dan di bawahnya, satu-satunya jenis kolom terpotong yang didukung adalah string.
    • Di Databricks Runtime 13.3 LTS ke atas, Anda dapat bekerja dengan kolom jenis stringterpotong , , longatau int.
    • Azure Databricks tidak mendukung bekerja dengan kolom tipe decimalterpotong .
  • Kloning inkremental menyinkronkan perubahan skema dan properti dari tabel sumber, setiap perubahan skema dan file data yang ditulis lokal ke tabel kloning ditimpa.
  • Katalog Unity tidak mendukung kloning dangkal.
  • Anda tidak dapat menggunakan pola glob saat menentukan jalur.

Catatan

Dalam Databricks Runtime 11.3, operasi ini tidak mengumpulkan statistik tingkat file. Dengan demikian, tabel target tidak mendapat manfaat dari melewatkan data Delta Lake. Statistik tingkat file dikumpulkan dalam Databricks Runtime 12.2 LTS ke atas.