全部产品
Search
文档中心

E-MapReduce:FAQ

更新时间:Jun 24, 2025

Topik ini memberikan jawaban atas beberapa pertanyaan umum tentang Delta Lake.

Mengapa saya tidak dapat membuat tabel?

Saat membuat tabel di Delta Lake, Anda harus menggunakan parameter LOCATION untuk menentukan direktori penyimpanan tabel tersebut. Tabel ini merupakan tabel eksternal di Spark. Jika direktori yang ditentukan oleh parameter LOCATION tidak ada, tabel dengan skema baru akan dibuat. Namun, jika direktori sudah ada, skema yang digunakan untuk membuat tabel harus sesuai dengan skema yang didefinisikan dalam file log Delta di direktori tersebut. Jika tidak sesuai, tabel tidak dapat dibuat.

Beberapa file kecil dihasilkan ketika saya menulis data streaming ke Delta Lake. Apa yang harus saya lakukan?

Ketika menggunakan Spark Streaming untuk menulis data ke Delta Lake, Anda menulis serangkaian mini batch data. Setiap batch data menghasilkan satu atau lebih file. Dalam banyak kasus, ukuran batch cenderung kecil. Akibatnya, pengoperasian Spark Streaming secara terus-menerus dapat menghasilkan sejumlah besar file kecil. Untuk mengatasi masalah ini, gunakan metode berikut:
  • Jika respons real-time tidak diperlukan, kami sarankan meningkatkan ukuran setiap mini batch.
  • Jalankan perintah OPTIMIZE secara berkala untuk menggabungkan file kecil pada tabel tersebut.

Mengapa perintah OPTIMIZE membutuhkan waktu lama untuk dijalankan?

Jika perintah OPTIMIZE tidak dijalankan untuk jangka waktu tertentu, sejumlah besar file kecil mungkin terbentuk di Delta Lake. Dalam situasi seperti itu, perintah OPTIMIZE dapat memerlukan waktu lama untuk dieksekusi. Kami menyarankan Anda mengonfigurasi tugas terjadwal untuk menjalankan perintah OPTIMIZE secara berkala.

Perintah OPTIMIZE gagal dijalankan. Apa yang harus saya lakukan?

Anda dapat menjalankan perintah OPTIMIZE saat ingin menghapus data historis dan menulis data baru. Delta Lake menggunakan mekanisme kunci optimis. Akibatnya, salah satu transaksi penulisan akan gagal jika beberapa transaksi penulisan dikomit bersamaan. Jika pekerjaan streaming terus memperbarui data di Delta Lake, terutama dalam kasus Change Data Capture (CDC), perintah OPTIMIZE lebih rentan mengalami kegagalan. Namun, jika pekerjaan streaming hanya menambahkan data tanpa menghapus atau memperbarui data, perintah OPTIMIZE tidak akan gagal. Kami menyarankan Anda mempartisi tabel berdasarkan waktu dan menjalankan perintah OPTIMIZE pada setiap partisi setelah data ditulis ke partisi tersebut.

Mengapa masih ada banyak file kecil setelah perintah OPTIMIZE dijalankan?

Perintah OPTIMIZE berfungsi untuk menggabungkan file kecil. Namun, file kecil yang telah digabungkan tidak langsung dihapus karena Delta Lake menyimpan data historis. File-file ini diperlukan saat mengakses snapshot tabel. Untuk menghapus file kecil tersebut, jalankan perintah VACUUM.

Mengapa masih ada banyak file kecil setelah perintah VACUUM dijalankan?

Perintah VACUUM berfungsi untuk menghapus file kecil yang telah digabungkan dan melewati periode retensi. Periode retensi default adalah tujuh hari. Jika sebuah file kecil belum digabungkan atau masih dalam periode retensi setelah digabungkan, perintah VACUUM tidak dapat menghapus file tersebut.

Bagaimana cara menghapus file kecil yang baru saja dihasilkan dan digabungkan?

Kami menyarankan agar Anda tidak menghapus file kecil yang baru saja dihasilkan karena file tersebut mungkin diperlukan saat mengakses data historis Delta Lake. Namun, jika Anda tetap ingin menghapus file kecil yang baru saja dihasilkan dan digabungkan, gunakan salah satu metode berikut:
  • Tetapkan spark.databricks.delta.retentionDurationCheck.enabled menjadi false dan lewatkan pengaturan tersebut sebagai parameter saat memulai pekerjaan Spark.
  • Ubah periode retensi global menjadi nilai yang lebih kecil. Sebagai contoh, dalam file spark-defaults.conf, atur spark.databricks.delta.properties.defaults.deletedFileRetentionDuration menjadi interval 1 jam.

Mengapa masih ada banyak file log Delta setelah perintah VACUUM dijalankan?

Perintah VACUUM berfungsi untuk menggabungkan file data, bukan file log Delta. Delta Lake secara otomatis menggabungkan dan menghapus file log setiap 10 commit. Setelah file log digabungkan, Delta Lake memeriksa file log yang kedaluwarsa dan menghapusnya. Periode retensi default untuk file log Delta adalah 30 hari.

Apakah Delta Lake mendukung pelaksanaan otomatis perintah OPTIMIZE atau perintah VACUUM?

Tidak, Delta Lake tidak mendukung pelaksanaan otomatis perintah OPTIMIZE atau perintah VACUUM karena Delta Lake adalah pustaka, bukan runtime. Delta Lake tidak menyediakan mekanisme untuk menjalankan otomatis perintah OPTIMIZE atau VACUUM. Namun, Anda dapat mengonfigurasi tugas terjadwal untuk menjalankan perintah OPTIMIZE atau VACUUM secara berkala.