Pekerjaan MaxCompute PyFG (Python Feature Generation) menghasilkan fitur kompleks secara batch offline dan mendukung tipe data ODPS 2.0 yang kompleks, seperti list, map, float, dan int. Pekerjaan ini menggunakan file konfigurasi serta parameter command-line untuk menentukan apakah akan melakukan binning terhadap fitur yang dihasilkan.
Metode 1: Gunakan gambar kelompok sumber daya serbaguna
Di Konsol DataWorks, buka Scheduling Configuration > Resource Properties. Pilih kelompok sumber daya serbaguna dan gunakan gambar dataworks_pairec_task_pod versi terbaru.
Catatan: Rilis gambar dataworks_pairec_task_pod mungkin tertinggal dari pembaruan pyfg, sehingga gambar tersebut belum tentu berisi paket pyfg terbaru. Untuk memeriksa versi yang diperlukan, lihat skrip yang dihasilkan oleh Penyesuaian Solusi yang Direkomendasikan - Konfigurasi Fitur. Untuk menggunakan versi terbaru pyfg, gunakan Metode 3 untuk membuat custom image pada kelompok sumber daya Anda.
Metode 2: Instal dependensi (untuk versi lama DataWorks)
Masuk ke Konsol DataWorks, buat grup sumber daya eksklusif untuk penjadwalan, lalu gunakan O&M Assistant untuk menginstal paket pyfg.
Untuk menginstal paket pyfg di kelompok sumber daya eksklusif DataWorks Anda, buka DataWorks->Management Center->Resource Group List-><a href="https://dataworks.console.alibabacloud.com/resource/runcommand" id="963b1e2ebd2ts">O&M Assistant</a>, lalu jalankan perintah berikut:
/home/tops/bin/pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --force-reinstall http://tzrec.oss-cn-beijing.aliyuncs.com/third_party/pyfg105-1.0.5-cp37-cp37m-linux_x86_64.whlFAQ
Metode 3: Sesuaikan gambar kelompok sumber daya (untuk versi baru DataWorks)
Untuk petunjuknya, lihat Custom images.
Unggah file sumber daya
Unggah file konfigurasi FG (dalam format JSON) ke proyek MaxCompute Anda.
Beberapa operator fitur memerlukan file sumber daya tambahan. Anda harus mengunggah file-file tersebut secara manual ke proyek MaxCompute Anda.
Feature operator | Description | Resource file parameter |
Text normalization | File stop word | |
Text tokenization feature | File konfigurasi vocabulary | |
Text relevance feature | File konfigurasi frekuensi term | |
custom operator | File konfigurasi operator |
Buat tabel output
Di DataWorks, buat node PyOdps3 dan jalankan skrip berikut untuk membaca fg.json, lalu membuat tabel output serta sumber daya yang diperlukan untuk eksekusi selanjutnya.
from pyfg105 import run_on_odps
fg_task = run_on_odps.FgTask(
args['input_table'],
args['output_table'],
args['fg_json_file'],
args['partition_value'],
force_delete_output_table=True,
force_update_resource=True)
fg_task.create_output_table(o)Sebelum menjalankan skrip, konfigurasikan parameter berikut di Scheduling Configuration: input_table, output_table, fg_json_file, dan partition_value.
Meskipun fg_task.run(o) secara otomatis membuat tabel output jika belum ada, kami merekomendasikan agar Anda memanggil metode ini terlebih dahulu untuk membuat tabel output. Langkah ini membantu mencegah konflik dan kegagalan tugas saat melakukan backfill data secara konkuren.
Jalankan tugas offline FG
Di DataWorks, buat node PyOdps3 dan jalankan skrip berikut. Skrip ini menjalankan tugas pembuatan fitur dan secara otomatis membuat tabel output jika belum ada.
from pyfg105 import run_on_odps
fg_task = run_on_odps.FgTask(
args['input_table'],
args['output_table'],
args['fg_json_file'],
args['partition_value'],
batch_size=128,
force_delete_output_table=False,
force_update_resource=False)
fg_task.add_sql_setting('odps.stage.mapper.split.size', 256)
fg_task.run(o)
Sebelum menjalankan skrip, konfigurasikan parameter berikut di Scheduling Configuration: input_table, output_table, fg_json_file, dan partition_value.
Jika Anda telah menginstal PyODPS, Anda juga dapat menginstal pyfg dan mengirimkan tugas secara lokal.
Parameter
Parameter | Default | Description |
input_table | None | Tabel input. |
output_table | None | Tabel output. Dibuat secara otomatis jika belum ada. |
fg_json_file | None | File konfigurasi FG, dalam format JSON. |
partition_value | None | Partisi tabel input yang akan diproses. Hasil ditulis ke partisi yang sesuai di tabel output. |
schema | None | Skema MaxCompute. Untuk informasi lebih lanjut, lihat operasi skema. |
batch_size | 128 | Jumlah record yang diproses dalam setiap batch. |
memory | 1024 | Jumlah memori yang dialokasikan ke node tugas, dalam satuan MiB. |
force_delete_output_table | False | Jika diatur ke True, sistem akan menghapus tabel output sebelum menjalankan tugas. |
force_update_resource | False | Jika diatur ke True, sistem akan memperbarui sumber daya sebelum menjalankan tugas. Untuk mencegah konflik konkurensi, hindari mengaktifkan parameter ini. |
output_merged_str | False | Jika diatur ke True, string akan secara otomatis digabung untuk menghasilkan fitur string besar dalam format RTP. |
debug | False | Jika diatur ke True, tugas berjalan dalam mode debug dan mencetak konten semua sumber daya yang diperbarui. |
sql_setting | None | Parameter SQL MaxCompute. Gunakan metode |
fg_setting | None | Parameter FG. Gunakan metode |
Anda dapat mengganti nilai parameter default dengan meneruskannya ke konstruktor FgTask, seperti yang ditunjukkan dalam contoh.
Cara kerja
Paket pyfg berjalan pada mesin gateway dalam kelompok sumber daya eksklusif untuk mengirimkan tugas SQL ke MaxCompute. Alternatifnya, Anda dapat menginstal pyfg dan PyODPS pada mesin lokal untuk mengirimkan tugas.
UDF kustom dalam tugas SQL memerlukan sumber daya seperti library bersama FG, file konfigurasi (misalnya, fg.json, kamus, dan library operator kustom), serta file kode UDF (.py). Semua sumber daya ini harus diunggah ke kluster MaxCompute dan disimpan dalam sistem file terdistribusinya. Saat tugas berjalan, setiap worker mengunduh sumber daya yang diperlukan dari sistem file terdistribusi dan memuatnya ke memori.
Beberapa sumber daya, seperti library bersama FG dan file kode UDF, digunakan bersama oleh beberapa tugas. Ketika force_update_resource=True, sistem menghapus sumber daya asli sebelum mengunggah yang baru. Proses ini menciptakan jendela waktu yang dapat mengganggu tugas lain yang sedang berjalan.