Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Langkah 2. Menerapkan logika transformasi
catatan
Transformasi visual khusus hanya mendukung skrip Python. Scala tidak didukung.
Untuk menambahkan kode yang mengimplementasikan fungsi yang ditentukan oleh file konfigurasi.json, disarankan untuk menempatkan file Python di lokasi yang sama dengan file.json, dengan nama yang sama tetapi dengan ekstensi “.py”. AWS Glue Studiosecara otomatis memasangkan file.json dan .py sehingga Anda tidak perlu menentukan jalur file Python di file konfigurasi.
Dalam file Python, tambahkan fungsi yang dideklarasikan, dengan parameter bernama dikonfigurasi dan daftarkan untuk digunakan. DynamicFrame
Berikut ini adalah contoh file Python:
from awsglue import DynamicFrame # self refers to the DynamicFrame to transform, # the parameter names must match the ones defined in the config # if it's optional, need to provide a default value def myTransform(self, email, phone, age=None, gender="", country="", promotion=False): resulting_dynf = # do some transformation on self return resulting_dynf DynamicFrame.myTransform = myTransform
Disarankan untuk menggunakan AWS Glue notebook untuk cara tercepat untuk mengembangkan dan menguji kode python. Lihat Memulai dengan notebook di AWS Glue Studio.
Untuk mengilustrasikan cara menerapkan logika transformasi, transformasi visual khusus pada contoh di bawah ini adalah transformasi untuk memfilter data yang masuk agar hanya menyimpan data yang terkait dengan status AS tertentu. File.json berisi parameter untuk functionName
as custom_filter_state
dan dua argumen (“state” dan “colName” dengan tipe “str”).
Contoh file config .json adalah:
{ "name": "custom_filter_state", "displayName": "Filter State", "description": "A simple example to filter the data to keep only the state indicated.", "functionName": "custom_filter_state", "parameters": [ { "name": "colName", "displayName": "Column name", "type": "str", "description": "Name of the column in the data that holds the state postal code" }, { "name": "state", "displayName": "State postal code", "type": "str", "description": "The postal code of the state whole rows to keep" } ] }
Untuk mengimplementasikan skrip pendamping dengan Python
-
Mulai buku AWS Glue catatan dan jalankan sel awal yang disediakan untuk sesi yang akan dimulai. Menjalankan sel awal menciptakan komponen dasar yang diperlukan.
-
Buat fungsi yang melakukan pemfilteran seperti yang dijelaskan dalam contoh dan daftarkan.
DynamicFrame
Salin kode di bawah ini dan tempel ke sel di AWS Glue buku catatan.from awsglue import DynamicFrame def custom_filter_state(self, colName, state): return self.filter(lambda row: row[colName] == state) DynamicFrame.custom_filter_state = custom_filter_state
-
Buat atau muat data sampel untuk menguji kode di sel yang sama atau sel baru. Jika Anda menambahkan data sampel di sel baru, jangan lupa untuk menjalankan sel. Sebagai contoh:
# A few of rows of sample data to test data_sample = [ {"state": "CA", "count": 4}, {"state": "NY", "count": 2}, {"state": "WA", "count": 3} ] df1 = glueContext.sparkSession.sparkContext.parallelize(data_sample).toDF() dynf1 = DynamicFrame.fromDF(df1, glueContext, None)
-
Uji untuk memvalidasi “custom_filter_state” dengan argumen yang berbeda:
-
Setelah menjalankan beberapa tes, simpan kode dengan ekstensi.py dan beri nama file.py dengan nama yang mencerminkan nama file.json. File.py dan.json harus berada di folder transformasi yang sama.
Salin kode berikut dan tempel ke file dan ganti nama dengan ekstensi file.py.
from awsglue import DynamicFrame def custom_filter_state(self, colName, state): return self.filter(lambda row: row[colName] == state) DynamicFrame.custom_filter_state = custom_filter_state
-
DiAWS Glue Studio, buka pekerjaan visual dan tambahkan transformasi ke pekerjaan dengan memilihnya dari daftar Transformasi yang tersedia.
Untuk menggunakan kembali transformasi ini dalam kode skrip Python, tambahkan jalur Amazon S3 ke file.py dalam pekerjaan di bawah “Jalur file yang direferensikan” dan dalam skrip, impor nama file python (tanpa ekstensi) dengan menambahkannya ke bagian atas file. Sebagai contoh:
import
<name of the file (without the extension) >