Dalam alur kerja data yang kompleks, seringkali diperlukan untuk meneruskan informasi dinamis antar node. Meskipun metode umum adalah menggunakan tabel antara, pendekatan ini tidak efisien untuk meneruskan sejumlah kecil data karena menambahkan I/O dan kompleksitas yang tidak perlu. Node penugasan memberikan solusi ringan: ia mengeksekusi skrip pendek (ODPS SQL, Python 2, atau Shell) dan meneruskan outputnya secara langsung sebagai parameter ke node hilir. Ini memungkinkan Anda membangun pipeline fleksibel di mana tugas-tugas dikonfigurasikan secara dinamis berdasarkan hasil dari tugas hulu.
Catatan Penggunaan
Edisi: DataWorks Edisi Standar atau lebih tinggi.
Izin: Pengguna RAM harus ditambahkan ke ruang kerja target dan diberi izin pengembang yang diperlukan.
Cara Kerjanya
Fungsi inti dari node penugasan adalah penerusan parameter: mentransfer data dari node penugasan ke node hilir.
Node penugasan menghasilkan data dengan secara otomatis menetapkan output terakhir atau hasil kueri ke parameter output sistem bernama
outputs.Node hilir mengonsumsi data tersebut. Anda mengonfigurasinya untuk menggunakan
outputsdengan menambahkan parameter input node (misalnya, param).
Format Parameter
Nilai dan format parameter outputs bergantung pada bahasa skrip yang digunakan:
Bahasa | Nilai | Format |
ODPS SQL | Output dari pernyataan | Set hasil diteruskan sebagai array dua dimensi. |
Python 2 | Output dari pernyataan | Output diperlakukan sebagai string tunggal, yang kemudian dipisahkan oleh koma ( |
Shell | Output dari pernyataan |
Prosedur
Hasil dari node penugasan dapat diteruskan ke semua jenis node hilir. Contoh berikut mendemonstrasikan alur kerja ini menggunakan node Shell.
Konfigurasikan node penugasan.
Masuk ke Konsol DataWorks. Di panel navigasi kiri, klik .
Dalam alur kerja Anda, buat dan edit node penugasan. Pada halaman konfigurasi node, pilih ODPS SQL untuk bahasa dan tulis kode.
select * from xc_dpe_e2.xc_rpt_user_info_d where dt='20191008' limit 10;(Opsional) Di panel kanan, klik Properties. Pada tab Input and Output Parameters, sistem secara otomatis membuat parameter output bernama
outputsuntuk node ini.
Konfigurasikan node Shell.
Buat node Shell dan atur sebagai node hilir dari node penugasan dengan menyeret koneksi dari node penugasan ke node Shell di kanvas alur kerja.
Pada halaman konfigurasi untuk node Shell, klik Properties di panel sisi kanan dan kemudian pilih tab Input and Output Parameters.
Di bagian Input Parameters, klik Create.
Di kotak dialog yang muncul, pilih parameter
outputsdari node penugasan dan tentukan nama parameter untuk parameter input node saat ini, seperti param.Konfigurasi ini secara otomatis membuat dependensi antara node hilir dan node penugasan.
Setelah mengonfigurasi parameter, referensikan nilai yang diteruskan dalam kode node Shell menggunakan format
${param}.echo '${param}'; echo 'Baris pertama: '${param[0]}; echo 'Field kedua dari baris pertama: '${param[0][1]};Sintaks akses variabel
${...}, termasuk pengindeksan array, bukan sintaks Shell standar. DataWorks melakukan pra-pemrosesan dan penggantian statis variabel ini sebelum eksekusi. Misalnya, DataWorks mengganti${param[0][1]}dengan nilai aktual yang diambil dari node penugasan sebelum menyerahkan skrip akhir ke Shell untuk dieksekusi.
Jalankan dan validasi hasilnya.
Klik dua kali nama alur bisnis untuk membukanya. Pada halaman konfigurasi alur kerja, klik Run di bilah alat untuk menjalankan alur kerja dan memvalidasi hasilnya. Atau, setelah Anda mengirimkan node ke lingkungan pengembangan, buka Operation Center dan gunakan pengisian ulang data untuk menguji eksekusi.
Keterbatasan
Parameter hanya dapat diteruskan ke node hilir langsung.
Batas ukuran: Parameter
outputstidak boleh melebihi 2 MB, jika tidak, node penugasan akan gagal.Keterbatasan sintaks:
Jangan menyertakan komentar dalam kode node penugasan. Komentar dapat mengganggu penguraian output dan menyebabkan node gagal atau menghasilkan nilai yang salah.
Klausa
WITHtidak didukung dalam mode ODPS SQL.
Contoh Berdasarkan Bahasa
Format data outputs dan metode referensi bervariasi berdasarkan bahasa.
Contoh 1: Meneruskan hasil kueri ODPS SQL
Hasil kueri SQL diteruskan ke node Shell sebagai array dua dimensi.
Node Penugasan
Tulis kueri
SELECT.select * from xc_dpe_e2.xc_rpt_user_info_d where dt='20191008' limit 2;Node Shell
Tambahkan parameter input bernama
paramyang mereferensikanoutputsdari node penugasan. Gunakan skrip berikut untuk membaca data:# Output seluruh array 2D echo "Set hasil lengkap: ${param}" # Output baris pertama (array 1D) echo "Baris pertama: ${param[0]}" # Output field kedua dari baris pertama echo "Field kedua dari baris pertama: ${param[0][1]}"Output yang Diharapkan
DataWorks menguraikan parameter dan melakukan penggantian statis, menghasilkan output berikut (nilai bergantung pada data Anda):
Set hasil lengkap: value1,value2 value3,value4 Baris pertama: value1,value2 Field kedua dari baris pertama: value2
Contoh 2: Meneruskan output Python 2
Output dari pernyataan print Python 2 dipisahkan oleh koma (,) dan diteruskan sebagai array satu dimensi.
Node Penugasan
Kode Python 2 adalah sebagai berikut:
print "hello,dataworks";Node Shell
Tambahkan parameter input bernama
paramyang mereferensikanoutputsdari node penugasan. Gunakan skrip berikut untuk membaca data:# Output seluruh array 1D echo "Set hasil lengkap: ${param}" # Output elemen berdasarkan indeks echo "Elemen pertama: ${param[0]}" echo "Elemen kedua: ${param[1]}"Output yang Diharapkan
DataWorks menguraikan parameter dan melakukan penggantian statis, menghasilkan output berikut:
Set hasil lengkap: "hello","dataworks" Elemen pertama: hello Elemen kedua: dataworks
Contoh 3: Meneruskan output Shell
Output dari pernyataan echo Shell dipisahkan oleh koma (,) dan diteruskan sebagai array satu dimensi.
Node Penugasan
Kode Shell adalah sebagai berikut:
echo "hello,dataworks";Node Shell
Tambahkan parameter input bernama
paramyang mereferensikanoutputsdari node penugasan. Gunakan skrip berikut untuk membaca data:# Output seluruh array 1D echo "Set hasil lengkap: ${param}" # Output elemen berdasarkan indeks echo "Elemen pertama: ${param[0]}" echo "Elemen kedua: ${param[1]}"Output yang Diharapkan
DataWorks menguraikan parameter dan melakukan penggantian statis, menghasilkan output berikut:
Set hasil lengkap: "hello","dataworks" Elemen pertama: hello Elemen kedua: dataworks
Kasus Penggunaan Lainnya
Penggunaan dengan node loop
Ketika node hilir adalah node for-each atau do-while, lihat Konfigurasi node for-each dan Konfigurasi node do-while.
Penetapan parameter bawaan di jenis node lain
Node penugasan hanya mendukung ODPS SQL, Python 2, dan Shell. Namun, untuk banyak jenis node lainnya, Anda dapat menggunakan fitur penetapan parameter bawaan mereka untuk mencapai tujuan yang sama dan menyederhanakan alur kerja Anda. Node ini meliputi: EMR Hive, Hologres SQL, EMR Spark SQL, AnalyticDB untuk PostgreSQL, ClickHouse SQL, dan MySQL.