Membuat skrip tata letak cetak biru - AWS Glue

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 Job untuk membuat objek Job, dan memberikan argumen seperti Command dan Role. Ini adalah properti pekerjaan yang akan Anda tentukan jika Anda membuat pekerjaan menggunakan AWS Glue konsol atau API.

  • (Opsional) Instansiasi kelas Crawler untuk membuat objek Crawler, dan memberikan nama, peran, dan argumen target.

  • Untuk menunjukkan dependensi antara objek (entitas alur kerja), berikan DependsOn dan argumen tambahan WaitForDependencies untuk Job() dan Crawler(). Argumen ini dijelaskan nanti dalam bagian ini.

  • Membuat instance Workflow kelas untuk membuat objek alur kerja yang dikembalikan keAWS Glue, meneruskan argumen, Name argumen, dan Entities argumen opsional. OnSchedule Argumen Entities menentukan semua tugas dan crawler yang akan disertakan dalam alur kerja. Untuk melihat bagaimana membangun sebuah objek Entities, 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.