Membuat sebuah transformasi kustom - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membuat sebuah transformasi kustom

Jika Anda perlu melakukan transformasi yang lebih rumit pada data Anda, atau ingin menambahkan kunci properti data ke set data, maka Anda dapat menambahkan transformasi Kode kustom ke diagram tugas Anda. Simpul kode kustom memungkinkan Anda untuk memasukkan sebuah skrip yang melakukan transformasi.

Saat menggunakan kode kustom, Anda harus menggunakan editor skema untuk menunjukkan perubahan yang dibuat pada output melalui kode kustom tersebut. Saat mengedit skema, Anda dapat melakukan tindakan-tindakan berikut:

  • Menambah atau menghapus kunci properti data

  • Mengubah jenis data kunci properti data

  • Mengubah nama kunci properti data

  • Melakukan restrukturisasi kunci properti yang di-nest

Anda harus menggunakan SelectFromCollectiontransformasi untuk memilih satu DynamicFrame dari hasil node transformasi Kustom Anda sebelum Anda dapat mengirim output ke lokasi target.

Gunakan tugas berikut untuk menambahkan simpul transformasi kustom ke diagram tugas Anda.

Menambahkan simpul transformasi kode kustom ke diagram tugas

Untuk menambahkan simpul transformasi kustom ke diagram tugas Anda
  1. (Opsional) Buka panel Resource dan kemudian pilih Custom transform untuk menambahkan transformasi kustom ke diagram pekerjaan Anda.

  2. Pada tab Properti simpul, masukkan nama untuk simpul dalam diagram tugas. Jika sebuah simpul induk belum dipilih, atau jika Anda ingin beberapa masukan untuk transformasi kustom, kemudian pilih sebuah simpul dari Induk simpul yang akan digunakan sebagai sumber masukan untuk transformasi.

Memasukkan kode untuk simpul transformasi kustom

Anda dapat mengetik atau menyalin kode ke dalam bidang input. Tugas menggunakan kode ini untuk melakukan transformasi data. Anda dapat memberikan potongan kode baik Python atau Scala. Kode harus mengambil satu atau beberapa DynamicFrames sebagai masukan dan mengembalikan sebuah koleksi DynamicFrames.

Untuk memasukkan skrip untuk simpul transformasi kustom
  1. Dengan simpul transformasi kustom yang sudah dipilih dalam diagram tugas, pilih tab Transformasi.

  2. Dalam bidang entri teks pada judul Blok kode, tempel atau masukkan kode untuk transformasi. Kode yang Anda gunakan harus sesuai dengan bahasa yang ditentukan untuk tugas di tab Detail tugas.

    Saat mengacu pada node input dalam kode Anda, AWS Glue Studio beri nama yang DynamicFrames dikembalikan oleh node diagram pekerjaan secara berurutan berdasarkan urutan pembuatan. Gunakan salah satu metode penamaan berikut dalam kode Anda:

    • Pembuatan kode klasik — Gunakan nama fungsional untuk merujuk ke node dalam diagram pekerjaan Anda.

      • Simpul sumber data :DataSource0, DataSource1, DataSource2, dan seterusnya.

      • Simpul transformasi: Transform0, Transform1, Transform2, dan seterusnya.

    • Pembuatan kode baru - Gunakan nama yang ditentukan pada tab properti Node dari sebuah node, ditambahkan dengan '_node1', '_node2', dan seterusnya. Misalnya,S3bucket_node1, ApplyMapping_node2S3bucket_node2,MyCustomNodeName_node1.

    Untuk informasi selengkapnya tentang pembuat kode baru, lihatPembuatan kode skrip.

Contoh berikut menunjukkan format kode yang akan dimasukkan dalam kotak kode:

Python

Contoh berikut mengambil DynamicFrame yang pertama diterima, mengonversinya menjadi DataFrame untuk menerapkan metode filter asli (hanya menyimpan catatan yang memiliki lebih dari 1000 suara), kemudian mengubahnya kembali menjadi DynamicFrame sebelum mengembalikannya.

def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection: df = dfc.select(list(dfc.keys())[0]).toDF() df_filtered = df.filter(df["vote_count"] > 1000) dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes") return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
Scala

Contoh berikut mengambil DynamicFrame yang pertama diterima, mengonversinya menjadi DataFrame untuk menerapkan metode filter asli (hanya menyimpan catatan yang memiliki lebih dari 1000 suara), kemudian mengubahnya kembali menjadi DynamicFrame sebelum mengembalikannya.

object FilterHighVoteCounts { def execute(glueContext : GlueContext, input : Seq[DynamicFrame]) : Seq[DynamicFrame] = { val frame = input(0).toDF() val filtered = DynamicFrame(frame.filter(frame("vote_count") > 1000), glueContext) Seq(filtered) } }

Mengedit skema di simpul transformasi kustom

Saat Anda menggunakan simpul transformasi khusus, AWS Glue Studio tidak dapat secara otomatis menyimpulkan skema keluaran yang dibuat oleh transformasi. Anda menggunakan editor skema untuk menggambarkan perubahan skema yang diimplementasikan oleh kode transformasi kustom.

Sebuah simpul kode kustom dapat memiliki sejumlah simpul induk, masing-masing menyediakan DynamicFrame sebagai masukan untuk kode kustom Anda. Sebuah simpul kode kustom mengembalikan sebuah koleksi DynamicFrames. Setiap DynamicFrame yang digunakan sebagai masukan memiliki skema terkait. Anda harus menambahkan skema yang menggambarkan setiap DynamicFrame yang dikembalikan oleh simpul kode kustom.

catatan

Saat Anda mengatur skema Anda sendiri pada transformasi khusus, AWS Glue Studio tidak mewarisi skema dari node sebelumnya. Untuk memperbarui skema, pilih simpul transformasi kustom, lalu pilih tab Pratinjau data. Setelah pratinjau dibuat, pilih 'Use Preview Schema'. Skema kemudian akan digantikan oleh skema menggunakan data pratinjau.

Untuk mengedit skema output untuk simpul transformasi kustom
  1. Dengan simpul transformasi kustom yang sudah dipilih dalam diagram tugas, di panel detail simpul, pilih tab Skema output.

  2. Pilih Edit untuk membuat perubahan pada skema.

    Jika Anda memiliki kunci properti data yang di-nest, seperti array atau objek, Anda dapat memilih iko Expand-Rows ( A double-ended arrow pointing upwards and downwards between two parallel lines ) di kanan atas dari setiap panel skema untuk memperluas daftar kunci properti data anak. Setelah Anda memilih ikon ini, ia akan berubah ke ikon Collapse-Rows ( Two arrows, one pointing up to a line and one pointing down to the same line ), yang dapat Anda pilih untuk menutup daftar kunci properti anak.

  3. Memodifikasi skema menggunakan tindakan berikut di bagian di sisi kanan halaman:

    • Untuk mengubah nama kunci properti, tempatkan kursor di kotak teks Kunci untuk kunci properti, lalu masukkan nama baru.

    • Untuk mengubah tipe data untuk kunci properti, gunakan daftar untuk memilih tipe data baru untuk kunci properti.

    • Untuk menambahkan kunci properti tingkat atas baru pada skema, pilih ikon Overflow ( An ellipsis (...) ) di sebelah kiri tombol Batalkan, dan kemudian pilih Tambahkan kunci akar.

    • Untuk menambahkan kunci properti anak untuk skema, pilih ikon Add-Key A rectangle with a plus sign in the bottom left corner yang dikaitkan dengan kunci induk. Pilih nama untuk kunci anak dan pilih tipe data.

    • Untuk menghapus kunci properti dari skema, pilih ikon Hapus ( An outline of a trash can ) yang ada di ujung kanan nama kunci.

  4. Jika kode transformasi kustom Anda menggunakan beberapa DynamicFrames, Anda dapat menambahkan skema output tambahan.

    • Untuk menambahkan skema baru dan kosong, pilih ikon Overflow ( An ellipsis (...) ), dan kemudian pilih Tambah skema output.

    • Untuk menyalin skema yang ada ke skema output baru, pastikan skema yang ingin Anda salin ditampilkan dalam pemilih skema. Pilih ikon Overflow ( An ellipsis (...) ), dan kemudian pilih Duplikasi.

    Jika Anda ingin menghapus sebuah skema output, pastikan skema yang ingin Anda salin ditampilkan dalam pemilih skema. Pilih ikon Overflow ( An ellipsis (...) ), dan kemudian pilih Hapus.

  5. Menambahkan kunci akar baru untuk skema baru atau mengedit kunci yang diduplikasi.

  6. Ketika Anda memodifikasi skema output, pilih Terapkan untuk menyimpan perubahan dan keluar dari editor skema.

    Jika Anda tidak ingin menyimpan perubahan, pilih tombol Batalkan.

Mengkonfigurasi output transformasi kustom

Sebuah transformasi kode kustom mengembalikan sebuah koleksi DynamicFrames, bahkan jika hanya ada satu DynamicFrame di set yang dihasilkan.

Untuk memproses output dari sebuah simpul transformasi kustom
  1. Tambahkan node SelectFromCollectiontransformasi, yang memiliki node transformasi kustom sebagai simpul induknya. Perbarui transformasi ini untuk menunjukkan set data yang ingin Anda gunakan. Lihat Menggunakan SelectFromCollection untuk memilih kumpulan data mana yang akan disimpan untuk informasi selengkapnya.

  2. Tambahkan SelectFromCollectiontransformasi tambahan ke diagram pekerjaan jika Anda ingin menggunakan tambahan yang DynamicFrames dihasilkan oleh node transformasi kustom.

    Pertimbangkan skenario di mana Anda menambahkan simpul transformasi kustom untuk membagi set data penerbangan menjadi beberapa set data, tetapi duplikat beberapa kunci properti pengidentifikasi di setiap skema output, seperti tanggal penerbangan atau nomor penerbangan. Anda menambahkan node SelectFromCollectiontransformasi untuk setiap skema output, dengan node transformasi kustom sebagai induknya.

  3. (Opsional) Anda kemudian dapat menggunakan setiap node SelectFromCollectiontransformasi sebagai input untuk node lain dalam pekerjaan, atau sebagai induk untuk node target data.