Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat skrip tata letak cetak biru
Skrip tata letak cetak biru harus menyertakan fungsi yang menghasilkan entitas dalam alur kerja Anda. Anda dapat memberi nama fungsi ini apa pun yang Anda suka. AWS Gluemenggunakan file konfigurasi untuk menentukan nama fungsi yang sepenuhnya memenuhi syarat.
Fungsi tata letak Anda melakukan hal-hal berikut:
-
(Opsional) Instansiasi kelas
Jobuntuk membuat objekJob, dan memberikan argumen sepertiCommanddanRole. Ini adalah properti pekerjaan yang akan Anda tentukan jika Anda membuat pekerjaan menggunakan AWS Glue konsol atau API. -
(Opsional) Instansiasi kelas
Crawleruntuk membuat objekCrawler, dan memberikan nama, peran, dan argumen target. -
Untuk menunjukkan dependensi antara objek (entitas alur kerja), berikan
DependsOndan argumen tambahanWaitForDependenciesuntukJob()danCrawler(). Argumen ini dijelaskan nanti dalam bagian ini. -
Membuat instance
Workflowkelas untuk membuat objek alur kerja yang dikembalikan keAWS Glue, meneruskan argumen,Nameargumen, danEntitiesargumen opsional.OnScheduleArgumenEntitiesmenentukan semua tugas dan crawler yang akan disertakan dalam alur kerja. Untuk melihat bagaimana membangun sebuah objekEntities, lihat contoh proyek dalam bagian ini nanti. -
Mengembalikan objek
Workflow.
Untuk definisi Job, Crawler, dan kelas Workflow, lihat AWS Gluereferensi kelas cetak biru.
Fungsi tata letak harus menerima argumen-argumen masukan berikut.
| Pendapat | Deskripsi |
|---|---|
user_params |
Kamus Python tentang nama parameter dan nilai-nilai cetak biru. Untuk informasi selengkapnya, lihat Menentukan parameter cetak biru. |
system_params |
Kamus Python berisi dua properti: region dan accountId. |
Berikut ini adalah contoh skrip tata letak generator dalam sebuah file bernama Layout.py:
import argparse import sys import os import json from awsglue.blueprint.workflow import * from awsglue.blueprint.job import * from awsglue.blueprint.crawler import * def generate_layout(user_params, system_params): etl_job = Job(Name="{}_etl_job".format(user_params['WorkflowName']), Command={ "Name": "glueetl", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole']) post_process_job = Job(Name="{}_post_process".format(user_params['WorkflowName']), Command={ "Name": "pythonshell", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole'], DependsOn={ etl_job: "SUCCEEDED" }, WaitForDependencies="AND") sample_workflow = Workflow(Name=user_params['WorkflowName'], Entities=Entities(Jobs=[etl_job, post_process_job])) return sample_workflow
Skrip contoh mengimpor perpustakaan cetak biru yang diperlukan dan menyertakan fungsi generate_layout yang menghasilkan sebuah alur kerja dengan dua tugas. Ini adalah skrip yang sangat sederhana. Skrip yang lebih kompleks dapat menggunakan logika dan parameter tambahan untuk menghasilkan sebuah alur kerja dengan banyak tugas dan crawler, atau bahkan sejumlah variabel tugas dan crawler.
Menggunakan DependsOn argumen
Argumen DependsOn adalah sebuah representasi kamus dependensi yang dimiliki entitas ini atas entitas lain dalam alur kerja. Ia memiliki bentuk berikut.
DependsOn = {dependency1 : state, dependency2 : state, ...}
Kunci dalam kamus ini mewakili referensi objek, bukan nama, entitas, sedangkan nilainya adalah string yang sesuai dengan status yang harus diperhatikan. AWS Gluemenyimpulkan pemicu yang tepat. Untuk status yang valid, lihat Struktur Kondisi.
Sebagai contoh, sebuah tugas mungkin bergantung pada keberhasilan penyelesaian sebuah crawler. Jika anda menentukan sebuah objek crawler bernama crawler2 sebagai berikut:
crawler2 = Crawler(Name="my_crawler", ...)
Maka sebuah objek yang tergantung pada crawler2 akan mencakup argumen konstruktor seperti:
DependsOn = {crawler2 : "SUCCEEDED"}
Misalnya:
job1 = Job(Name="Job1",..., DependsOn = {crawler2 : "SUCCEEDED", ...})
Jika DependsOn dihilangkan dan diganti sebuah entitas, maka entitas tersebut tergantung pada pemicu awal alur kerja.
Menggunakan WaitForDependencies argumen
Argumen WaitForDependencies mendefinisikan apakah sebuah entitas tugas atau crawler harus menunggu sampai semua entitas yang tergantung selesai atau sampai salah satu selesai.
Nilai yang diijinkan adalah "AND" atau "ANY".
Menggunakan OnSchedule argumen
Argumen OnSchedule untuk konstruktor kelas Workflow adalah sebuah ekspresi cron yang menentukan definisi pemicu awal untuk alur kerja.
Jika argumen ini ditentukan, AWS Glue membuat pemicu jadwal dengan jadwal yang sesuai. Jika tidak ditentukan, maka pemicu awal untuk alur kerja adalah pemicu sesuai permintaan.