Dependensi siklus yang sama mengharuskan sebuah node menunggu instans leluhurnya dari siklus yang sama selesai dengan sukses sebelum dapat dijalankan. Gunakan dependensi ini ketika sebuah node mengonsumsi data yang dihasilkan oleh node leluhur pada hari yang sama. DataWorks menyediakan beberapa cara untuk mengonfigurasi dependensi ini, termasuk fitur pratinjau yang membantu Anda meninjau dan memperbaikinya agar tugas dijadwalkan sesuai harapan.
Cara kerja
Anda membuat dependensi penjadwalan dengan mencocokkan output node dengan input node. Hal ini menghubungkan output node leluhur ke input node turunan. Setelah Anda mengonfigurasi dependensi tersebut, node turunan hanya akan mulai berjalan setelah node leluhur berhasil dijalankan. Sebelum memulai, kami menyarankan Anda mengidentifikasi target dan jenis dependensi berdasarkan lineage tabel Anda. Untuk informasi lebih lanjut, lihat Panduan konfigurasi dependensi penjadwalan.
Output node
Output node, juga dikenal sebagai nama output node saat ini, mengidentifikasi node tersebut agar node lain dapat bergantung padanya. Output ini tidak merepresentasikan data aktual yang dihasilkan oleh node tersebut. Node lain menggunakan nama output ini untuk menentukannya sebagai dependensi leluhur.
DataWorks secara otomatis menghasilkan dua nama output untuk setiap node:
-
projectName.randomNumber_out: Output ini bersifat unik secara global dan tidak dapat dimodifikasi atau dihapus. -
projectName.nodeName: Output ini mencakup nama node dan dapat dimodifikasi. Nama output ini tetap tidak berubah meskipun node tersebut diganti namanya.
DataWorks juga memungkinkan Anda menambahkan output secara manual atau melalui penguraian otomatis input dan output dari kode Anda. Dukungan untuk penguraian otomatis bervariasi tergantung jenis node. Untuk detailnya, lihat Perbandingan hasil penguraian otomatis.
Input node
Input node menentukan node leluhur yang menjadi dependensi node saat ini. Anda dapat menentukan dependensi dengan menggunakan nama output leluhur (disarankan), nama node, atau ID node.
ID node hanya dihasilkan setelah node leluhur dikomit ke lingkungan produksi.
Pedoman konfigurasi
Untuk meningkatkan efisiensi pengembangan, kami menyarankan menggunakan fitur penguraian otomatis guna mengonfigurasi dependensi node secara cepat. Saat menggunakan penguraian otomatis, ikuti pedoman berikut:
-
Pembuatan node: Kami menyarankan memberi nama setiap node sesuai dengan tabel output-nya.
-
Pengembangan kode: Hindari memiliki beberapa node yang menulis data ke tabel yang sama.
-
Konfigurasi dependensi: Kami menyarankan menetapkan tabel yang dihasilkan oleh sebuah node sebagai output node tersebut.
Titik masuk dan metode
Buka halaman edit node DataStudio, klik Scheduling configuration di panel navigasi sisi kanan, lalu konfigurasikan dependensi penjadwalan untuk node tersebut di bagian Scheduling Dependency.
-
Parent Nodes: Menentukan node leluhur yang menjadi dependensi tugas saat ini.
-
Output Name of Current Node: Menentukan output mana dari node ini yang dapat digunakan oleh tugas lain untuk membuat dependensi.
-
Saat Anda mengedit kode, DataWorks secara default menetapkan dependensi berdasarkan lineage tabel. Saat Anda mengomit node tersebut, DataWorks secara otomatis memeriksa apakah dependensi konsisten dengan alur data. Anda dapat memilih apakah akan mengaktifkan penguraian otomatis sebelum mengomit. Untuk informasi lebih lanjut, lihat Konfigurasikan pengaturan penjadwalan.
-
Jika node Anda perlu bergantung pada data dari eksekusi leluhur pada hari sebelumnya, atau jika node per jam/per menit bergantung pada instansnya sendiri dari siklus sebelumnya, Anda harus mengonfigurasi dependensi lintas siklus.
-
Untuk skenario kompleks di mana node dan leluhurnya memiliki frekuensi penjadwalan berbeda, seperti tugas harian yang bergantung pada tugas per jam, lihat Wajib baca: Prinsip dan contoh konfigurasi penjadwalan untuk skenario dependensi kompleks.
Anda dapat menggunakan salah satu dari tiga metode berikut untuk mengonfigurasi dependensi. Prinsip dasarnya sama untuk semua metode.
Uraikan dependensi dari kode
Penguraian otomatis menganalisis lineage tabel dalam kode Anda untuk menetapkan output node dan dependensi leluhurnya. Setelah penguraian, tabel yang ditulis oleh node Anda secara otomatis ditambahkan sebagai output node dalam format projectname.tablename. DataWorks secara otomatis menambahkan tabel yang dibaca oleh node Anda sebagai input node.
Sebagai contoh, tabel dalam pernyataan SELECT diuraikan sebagai dependensi leluhur untuk node saat ini. Tabel dalam pernyataan INSERT diuraikan sebagai output dari node saat ini. Untuk daftar kata kunci yang didukung oleh penguraian otomatis untuk berbagai jenis node, lihat Skenario penguraian otomatis pada berbagai jenis node.
-
Konfigurasikan dependensi
Penguraian otomatis mendukung dua metode: secara manual parsing inputs and outputs from code dan Automatic Parsing Before Committing. Kedua metode ini didasarkan pada prinsip yang sama. Penguraian otomatis sebelum commit secara otomatis mengurai input dan output saat Anda melakukan commit kode dan meminta Anda untuk memasang dependensi.
Sebagai contoh, asumsikan node ODPS bernama
mc2perlu bergantung pada tabel outputdws_user_info_all_didari nodemc1. Kode untukmc2adalah sebagai berikut:INSERT OVERWRITE TABLE ads_user_info_1d PARTITION (dt='${workflow.var}') SELECT uid , MAX(region) , MAX(device) , COUNT(0) AS pv , MAX(gender) , MAX(age_range) , MAX(zodiac) FROM dws_user_info_all_di WHERE dt = '${workflow.var}' GROUP BY uid;Mengklik Parse Input and Output from Code mengurai input untuk node saat ini sebagai tabel
dws_user_info_all_didan secara otomatis mencocokkan nama tabel output dengan nama node leluhur.Ancestor output name
Ancestor output table
Ancestor name
Node ID
Workspace
Owner
Scheduling cycle
Method
Last run status
Actions
yunwan_lingyi.dws_user_info_all_di
mc1
-
Test Workspace
lingyi01_testcloud_com
Daily
Automatic parsing
No data available
Delete
Pada saat yang sama, DataWorks mengidentifikasi tabel
ads_user_info_1dsebagai output node tersebut. Hasil penguraiannya adalah sebagai berikut:Output name
Output table
Descendant name
Owner
Method
Affected baseline
Actions
old_ide.505487297_out
-
-
-
System default
-
Delete
old_ide.mc2
-
-
-
Manually added
-
Delete
yunwan_lingyi.ads_user_info_1d
yunwan_lingyi.ads_user_info_1d
-
-
Automatic parsing
-
Delete
Dependensi node
mc2terhadap nodemc1kini telah dikonfigurasi. -
Modifikasi dependensi yang dibuat oleh penguraian otomatis
Jika penguraian otomatis membuat dependensi yang salah, atau jika Anda perlu menghapus dependensi untuk skenario yang tidak didukung (seperti tabel yang tidak dihasilkan oleh tugas periodik), Anda dapat memodifikasi hasilnya.
Actions
Description
Manually remove a parsed result
Dalam daftar node leluhur, hapus input yang salah dan uraikan ulang kode tersebut. DataWorks secara otomatis menambahkan komentar ke kode Anda untuk mencegah input atau output tersebut ditambahkan kembali saat penguraian berikutnya:
--@exclude_input=projectname.tablename --@exclude_output=projectname.tablenameManually add an input or output
Di editor kode, klik kanan nama tabel dan pilih untuk menambahkannya sebagai input atau output. DataWorks secara otomatis menambahkan komentar yang sesuai ke kode Anda:
--@extra_output=projectname.tablename --@extra_input=projectname.tablenameAtau, Anda dapat menambahkan dependensi node leluhur secara manual di UI konfigurasi penjadwalan atau mengonfigurasi dependensi node dengan menggambar garis pada kanvas alur kerja.
PentingAnda tidak dapat langsung menghapus output node yang menjadi dependensi bagi node turunan. Melakukannya akan menyebabkan node turunan gagal saat eksekusi atau pengambilan data. Kami menyarankan Anda terlebih dahulu memodifikasi logika bisnis node turunan untuk menghapus dependensi tersebut, lalu menghapus output dari node leluhur.
-
Skenario yang dikecualikan dari penguraian otomatis
DataWorks tidak mengurai tabel temporary sebagai output node atau dependensi leluhur. Tabel temporary didefinisikan dengan format tertentu di Workspace Table Management, seperti tabel dengan nama yang diawali dengan
t_. -
Catatan penggunaan untuk penguraian otomatis
Saat menggunakan penguraian otomatis untuk menetapkan dependensi, pastikan setiap output node bersifat unik dalam Wilayah saat ini. Pertimbangkan hal berikut saat mengembangkan di DataWorks:
-
Pembuatan node: Secara default, setiap node memiliki output dengan nama yang sama seperti node tersebut. Jika Anda memiliki dua node dengan nama yang sama dalam ruang kerja yang sama, Anda harus mengubah secara manual output node salah satunya.
-
Pengembangan kode: Penguraian otomatis menggunakan tabel output node sebagai output node. Jika dua node terjadwal dalam ruang kerja yang sama menulis data ke tabel yang sama, penguraian otomatis akan menyebabkan salah satu node melaporkan error. Untuk informasi lebih lanjut, lihat Penguraian otomatis melaporkan error karena beberapa node menulis data ke tabel yang sama dan memiliki nama output yang sama.
-
Jika Anda menggunakan node SQL untuk memproses output dari node sinkronisasi Batch, Anda dapat menggunakan penguraian otomatis untuk membuat dependensi tersebut. Untuk melakukannya, Anda harus terlebih dahulu mengonfigurasi output dengan menambahkan secara manual tabel output node tersebut atau memberi nama node sesuai dengan tabel output-nya. Jika tidak, node SQL downstream mungkin gagal dikomit dan melaporkan error berikut: Output dari node leluhur yang menjadi dependensi node saat ini, ${projectname.tablename}, tidak ada. Anda tidak dapat mengomit node saat ini. Pastikan node leluhur dengan output ini telah dikomit.
-
Tambahkan dependensi secara manual
Pada halaman konfigurasi Scheduling Configuration > Scheduling Dependency > Parent Nodes, Anda dapat menambahkan node leluhur secara manual dengan memasukkan output node, nama node, atau ID node-nya. Kami menyarankan menggunakan output node untuk membuat dependensi karena nama node dapat diduplikasi.
Gambar dependensi di kanvas
Di panel grafik asiklik terarah (DAG) sebuah alur kerja, Anda dapat menggambar garis dari node leluhur ke node turunan untuk membuat dependensi. DataWorks secara otomatis menambahkan output node leluhur, diformat dengan akhiran _out, sebagai input untuk node turunan.
Jika Anda menghapus garis koneksi dari kanvas alur kerja, dependensi penjadwalan yang sesuai juga akan dihapus dari konfigurasi node tersebut.
Dampak perubahan output node
Mengubah output node, baik dengan memodifikasi data yang dihasilkannya maupun dengan mengedit namanya, memiliki efek berikut:
-
Menghapus output node tidak secara langsung memengaruhi data tabel yang dihasilkan oleh node tersebut.
-
Jika output node merupakan dependensi bagi node turunan, mengubah atau menghapusnya dapat menyebabkan masalah serius bagi tugas downstream.
-
Mengubah tabel output: Jika tabel output node diubah sehingga menyebabkan output node yang diuraikan berubah, node turunan dapat menjadi node terisolasi yang tidak dijadwalkan. Hal ini juga dapat menyebabkan korupsi data pada tugas downstream akibat dependensi data yang hilang.
-
Memindahkan tabel output: Jika Anda perlu memindahkan tabel output node ke node lain, lihat Dampak penghapusan atau perubahan output node untuk instruksinya.
Jika output node memiliki dependensi turunan, komunikasikan terlebih dahulu dengan pemilik tugas downstream sebelum menghapus output tersebut. Memberi tahu mereka tentang perubahan tersebut memungkinkan mereka menyesuaikan konfigurasi dan mencegah tugas mereka menjadi terisolasi.
-
Verifikasi dependensi
Setelah mengonfigurasi dependensi, verifikasi dependensi tersebut untuk memastikan tugas dijadwalkan sesuai harapan:
-
Pratinjau dependensi: Ini membantu Anda menghindari keterlambatan penjadwalan akibat konfigurasi dependensi yang salah.
-
Periksa saat commit: Saat melakukan commit node, pastikan perubahan dependensi sesuai dengan harapan Anda.
-
Konfirmasi dependensi tugas periodik: Setelah node dideploy, buka Pusat Operasi untuk memastikan dependensi untuk tugas produksi sudah benar. Tugas periodik merepresentasikan status node yang telah dikomit di lingkungan produksi. Dependensi antar instans periodiknya bergantung pada cara instans tersebut dihasilkan.
Untuk informasi lebih lanjut, lihat Konfirmasi dependensi penjadwalan.
FAQ
Untuk pertanyaan umum lainnya, lihat Dependensi penjadwalan.
Praktik terbaik
Untuk mengonfigurasi dependensi lintas ruang kerja atau alur kerja, lihat Skenario 3: Bagaimana cara mengonfigurasi dependensi penjadwalan untuk node di alur kerja atau ruang kerja yang berbeda?.