Mundurkan dan putar ulang pipeline

Important

Fitur ini ada di Beta. Untuk mengaktifkannya, atur pipeline Anda ke saluran Preview dan atur konfigurasi pipeline pipelines.rewind.betaEnabled ke true. Lihat Persyaratan.

Transformasi yang keliru, sekumpulan catatan sumber yang tidak valid, atau perubahan skema yang tak terduga dapat menyebabkan tabel dalam pipeline menjadi tidak benar mulai dari titik waktu tertentu yang diketahui dan seterusnya. Rewind mengembalikan pipeline ke titik sebelum masalah sehingga Anda dapat menerapkan perbaikan dan memproses ulang hanya data yang terdampak.

Rewind mengembalikan versi tabel, offset sumber streaming, dan status operator bersamaan, sehingga replay tidak melewati rekaman atau menulis duplikat. Tiga operasi memproses ulang data, dan mereka menyelesaikan masalah yang berbeda:

  • Rewind adalah untuk pipeline yang dapat dipulihkan yang menulis data yang salah dari titik waktu yang diketahui, seperti setelah transformasi yang buruk, input yang salah, atau penyebaran kode yang buruk. Perangkat ini mengembalikan data tabel, offset sumber, dan status operator ke titik sebelum masalah dan hanya memproses ulang data yang terdampak, mempertahankan status operator. Data sebelum titik tersebut tetap tidak berubah.
  • Penyegaran penuh membangun kembali tabel dari semua data sumber yang tersedia dan menghapus kontennya saat ini. Gunakan untuk menghitung ulang semuanya dari awal, atau ketika perubahan kode tidak kompatibel dengan status yang ada.
  • Setel ulang checkpoint memulihkan pipeline yang checkpoint-nya tidak valid atau rusak, atau yang terblokir akibat perubahan kode yang tidak kompatibel dengan checkpoint. Ini mereset checkpoint dan melanjutkan proses sambil tetap mempertahankan isi tabel saat ini. Rewind tidak dapat memulihkan kasus-kasus ini, karena tidak melonggarkan aturan kompatibilitas Structured Streaming.

Persyaratan

Requirement Detil
Channel Pipeline harus berada di saluran Pratinjau. Lihat Mengonfigurasi alur.
Configuration Atur konfigurasi pipelines.rewind.betaEnabled pipeline menjadi true, lalu jalankan pipeline satu kali. Setiap aliran hanya dapat diputar ulang setelah menyelesaikan pembaruan dengan perjalanan waktu diaktifkan.
Mode alur Pipa yang terpicu dan berkelanjutan. Mode waktu nyata tidak didukung.
Sources tabel Delta, tabel streaming, Kafka, dan Auto Loader.
Targets Tabel streaming dan tampilan material.
Flows Aliran streaming dan aliran AUTO change data capture (CDC), termasuk target SCD Tipe 1 dan SCD Tipe 2. Kueri berstatus seperti agregasi, gabungan, dan deduplikasi didukung.

Setiap aliran dalam pipeline harus memenuhi persyaratan ini. Saat pipelines.rewind.betaEnabled berstatus true, pembaruan pipeline yang berisi alur yang tidak memenuhi syarat akan gagal. Pastikan setiap aliran memenuhi persyaratan di atas sebelum Anda mengaktifkannya.

Note

Pipeline yang pipelines.rewind.betaEnabled-nya disetel ke true tidak dapat kembali ke channel Current hingga channel Current diperbarui ke runtime yang mendukung pemunduran.

Cara kerja rewind dan replay

Putar ulang dan putar kembali adalah dua langkah yang terpisah.

Rewind mengembalikan setiap tabel ke versi yang dipegang pada titik rewind dan mengatur ulang checkpoint streaming yang melacak seberapa jauh setiap aliran telah dibaca. Transformasi Anda tidak berjalan, dan tidak ada data sumber yang diproses ulang.

Replay terjadi saat pipeline dijalankan lagi. Sistem ini memproses ulang dari titik rewind menggunakan definisi pipeline saat ini, menyusul hingga kondisi terkini, lalu melanjutkan pemrosesan inkremental normal. Rewind tidak memulai pipeline, jadi mulai sendiri saat Anda sudah siap.

Pipa ini secara otomatis menghasilkan titik rewind, sekitar sekali per jam, dan menyimpannya selama 7 hari. Pipeline yang baru saja Anda buat tidak memiliki apa pun untuk diulang sampai menghasilkan hasil pertamanya.

Mengembalikan dataset juga mengembalikan semua yang berada di hilirnya dalam pipeline yang sama. Rewind mencakup satu pipeline. Ini tidak berkoordinasi dengan pipeline lain atau dengan pembaca eksternal yang mengakses tabel yang sama, jadi tangani hal tersebut secara terpisah.

Putar ulang pipeline menggunakan UI

UI dan Genie adalah cara utama untuk menggunakan Rewind. Antarmuka pengguna mencantumkan titik pengembalian yang tersedia dan menunjukkan set data mana yang dipengaruhi oleh masing-masing titik tersebut sebelum Anda mengonfirmasi.

  1. Di halaman pipeline Anda, klik ikon Chevron down. tombol di sebelah Run pipeline, lalu klik Rewind pipeline.
  2. Pilih titik rewind, atau gunakan pintasan seperti Rewind to yesterday atau Rewind to the latest point. Klik Berikutnya.
  3. Pilih tabel mana yang akan dimasukkan. Gunakan tampilan Grafik untuk memilih dataset di grafik pipeline, atau tampilan Daftar untuk memilihnya dari tabel. Tinggalkan Reset semua checkpoint yang dipilih (default) untuk mengembalikan offset sumber dan status operator beserta data tabel, sehingga pipeline memproses ulang dari titik rewind. Bersihkan untuk memulihkan data tabel saja, tanpa memproses ulang, misalnya ketika Anda ingin isi tabel dipulihkan tetapi tidak ingin memproses ulang data yang terdampak. Pengaturan ini harus sama untuk tabel dan aliran hulunya, dan tidak dapat dibersihkan untuk aliran yang membaca sumber eksternal seperti Kafka atau Auto Loader. Klik Berikutnya.
  4. Tinjau titik rewind, pengaturan checkpoint, dan dataset yang terdampak, lalu klik Rewind.

Mulai pipeline untuk memutar ulang data.

Anda dapat memutar mundur berulang kali. Setiap rewind menggantikan rewind terakhir, jadi Anda dapat memulihkan diri dari replay yang gagal dengan melakukan rewind di tempat lain.

Setelah memutar ulang ke belakang

Kegagalan replay membuat pipa diputar ulang namun berhenti. Perbaiki kode atau data sumber, lalu jalankan pipeline untuk mencoba lagi, atau kembali ke titik yang berbeda. Pipeline tidak melakukan rollback secara otomatis, dan kesalahan ditampilkan melalui diagnostik pipeline standar serta log kejadian.

Replay hanya berhasil jika definisi pipeline saat ini kompatibel dengan status yang dipulihkan; rewind tidak melonggarkan aturan kompatibilitas Structured Streaming. Untuk perubahan yang kompatibel, lihat Jenis perubahan dalam kueri Structured Streaming. Tampilan termaterialisasi menggunakan semantik batch dan dapat mentoleransi perubahan skema yang lebih luas, tetapi tetap gagal jika suatu ketergantungan tidak kompatibel.

Pemutaran ulang yang gagal di tengah proses dapat membuat pipeline terputar ulang hanya sebagian. Anda memiliki dua opsi:

  1. Putar ulang lagi ke titik yang sama atau titik lain, dan pipeline akan mengerucut ke titik tersebut.
  2. Untuk memaksa pipeline memulai pembaruan normal meskipun rewind belum selesai, atur pipelines.allowUpdateAfterIncompleteRewind ke true lalu mulai ulang pipeline.

Seberapa jauh Anda dapat memutar ulang

Poin Rewind disimpan selama 7 hari. Dalam jendela tersebut, rewind gagal jika data yang dibutuhkan sudah dihapus. Periksa hal-hal berikut sebelum Anda mengandalkan fungsi putar ulang:

  • VACUUM atau singkatan delta.deletedFileRetentionDuration di atas meja Anda. Lihat Bekerja dengan riwayat tabel.
  • Masa retensi sumber lebih singkat daripada rentang waktu yang ingin Anda putar ulang, seperti topik Kafka yang menyimpan data selama satu hari.

Pipeline dengan beberapa sumber atau rantai dependensi yang panjang memerlukan masa retensi yang lebih lama, karena setiap tabel dan checkpoint harus dapat merujuk kembali ke satu titik yang konsisten.

Keterbatasan

  • Rewind tidak dapat mengembalikan pipeline ke titik sebelum refresh penuh.
  • Titik rewind disimpan selama 7 hari, dan rewind akan gagal jika riwayat tabel atau data sumber yang diperlukan untuk mencapai titik tersebut telah dihapus, misalnya oleh VACUUM atau karena masa retensi sumber yang singkat. Lihat Seberapa jauh Anda bisa mundur.
  • Mode waktu nyata tidak didukung.
  • Kinesis, Pulsar, Google Pub/Sub, dan sumber kustom yang dibangun dengan API sumber data DSv2 atau Python tidak didukung sebagai sumber.
  • Sink eksternal dan sink kustom tidak didukung, termasuk sink yang didefinisikan dengan create_sink(). Lihat Menggunakan sink dalam alur.
  • Tabel streaming yang menggunakan filter baris atau masker kolom tidak dapat diputar ulang. Lihat Menerapkan filter baris dan masker kolom secara manual.
  • Stateful rewind memerlukan penyimpanan status RocksDB, yang digunakan pipeline secara default. Gagal melakukan rewind untuk alur yang dikonfigurasi untuk menggunakan penyimpanan status yang berbeda.
  • Beberapa tabel streaming AUTO CDC perlu diperbarui sebelum dapat diputar ulang. Pipeline akan memberi tahu Anda saat Anda meminta putar ulang.
  • Tampilan termaterialisasi dapat dihitung ulang sepenuhnya alih-alih disegarkan secara bertahap setelah rewind. Lihat Refresh inkremental untuk tampilan materialisasi.
  • Rewind hanya berlaku untuk satu pipeline dan tidak melakukan koordinasi dengan pembaca eksternal atau pipeline lain yang membaca tabel yang sama.
  • Rewind tidak mengembalikan kode pipeline, konfigurasi pipeline, atau metadata objek Unity Catalog seperti tag dan grant.

Sumber daya tambahan