Pekerjaan MaxCompute PyFg 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 dan parameter command-line untuk menentukan apakah akan melakukan binning terhadap fitur yang dihasilkan.
Metode 1: Gunakan image resource group tujuan umum
Di DataWorks, pada bagian Scheduling Configuration – Resource Properties, pilih grup sumber daya umum dan image dataworks_pairec_task_pod versi terbaru.
Catatan: Image dataworks_pairec_task_pod mungkin tidak menyertakan versi terbaru paket pyfg karena siklus rilisnya dapat tertinggal dari pembaruan pyfg. Untuk memeriksa versi spesifik, lihat skrip yang dihasilkan oleh Kustomisasi solusi yang direkomendasikan – Konfigurasi fitur. Untuk menggunakan versi pyfg terbaru, buat image grup sumber daya kustom seperti yang dijelaskan dalam Metode 3.
Metode 2: Instal paket dependensi (untuk versi lama DataWorks)
Login ke Konsol DataWorks, buat exclusive resource group for scheduling, lalu gunakan O&M Assistant untuk menginstal paket pyfg.
Untuk menginstal paket pyfg di grup sumber daya eksklusif DataWorks, navigasikan ke DataWorks > Management Center > Resource Group List > <a href="https://dataworks.console.aliyun.com/resource/runcommand" id="963b1e2ebd2ts">O&M Assistant</a>. Berikut contohnya:
/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/pyfg101-1.0.1-cp37-cp37m-linux_x86_64.whlMetode 3: Gunakan image custom resource group (untuk versi baru DataWorks)
Untuk informasi selengkapnya, lihat Custom images.
Unggah file resource
Unggah file konfigurasi FG dalam format JSON ke proyek MaxCompute Anda.
Beberapa operator FG memerlukan file resource tambahan. Anda harus mengunggah file-file tersebut secara manual ke proyek MaxCompute Anda.
Feature operator | Description | Resource file configuration item |
Normalisasi teks | File stop word | |
Fitur tokenisasi teks | File konfigurasi vocabulary | |
Fitur relevansi teks | File konfigurasi term frequency | |
Operator kustom | File konfigurasi operator |
Buat tabel output
Di DataWorks, buat node PyOdps3 dan jalankan skrip berikut untuk membuat tabel output serta resource lain yang diperlukan berdasarkan isi file fg.json.
from pyfg101 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 bagian Scheduling Configuration: input_table, output_table, fg_json_file, dan partition_value.
Metode fg_task.run(o) secara otomatis membuat tabel output jika belum ada. Namun, sebaiknya Anda membuat tabel tersebut terlebih dahulu untuk mencegah konflik yang dapat menyebabkan kegagalan tugas selama pengisian ulang data secara konkuren.
Jalankan tugas offline FG
Buat node PyOdps3 di DataWorks dan jalankan skrip berikut. Skrip ini secara otomatis membuat tabel output berdasarkan isi file fg.json.
from pyfg101 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, atur parameter berikut di bagian Scheduling Configuration: input_table, output_table, fg_json_file, dan partition_value.
Jika PyODPS telah diinstal di mesin lokal Anda, Anda juga dapat menginstal pyfg secara lokal untuk mengirimkan tugas.
Parameter
Parameter | Nilai default | Deskripsi |
input_table | None | Tabel input. |
output_table | None | Tabel output. Dibuat secara otomatis. |
fg_json_file | None | File konfigurasi FG dalam format JSON. |
partition_value | None | Menentukan partisi dari tabel input yang digunakan sebagai input untuk FG. Hasilnya disimpan ke partisi yang sesuai pada tabel output. |
schema | None | Menentukan schema MaxCompute. Untuk informasi lebih lanjut, lihat Schema operations. |
batch_size | 128 | Jumlah record yang diproses dalam satu batch. |
memory | 1024 | Jumlah memori yang digunakan oleh node tugas, dalam MB. |
force_delete_output_table | False | Menentukan apakah tabel output akan dihapus. Jika diatur ke True, tabel output dihapus sebelum tugas dijalankan. |
force_update_resource | False | Menentukan apakah resource akan diperbarui. Jika diatur ke True, resource diperbarui sebelum tugas dijalankan. Jangan selalu mengatur nilai ini ke True. Hal ini dapat menyebabkan konflik konkurensi. |
output_merged_str | False | Menentukan apakah string akan digabung. Jika diatur ke True, string secara otomatis digabung untuk menghasilkan fitur string besar dalam format RTP. |
debug | False | Menentukan apakah akan dijalankan dalam mode debug. Jika diatur ke True, konten semua resource yang diperbarui akan dicetak. |
sql_setting | None | Parameter kunci dan nilai untuk metode |
fg_setting | None | Parameter kunci dan nilai untuk metode |
Ubah nilai parameter default dalam kode seperti yang ditunjukkan pada contoh.
Informasi tambahan
Paket pyfg diinstal pada mesin gerbang di grup sumber daya eksklusif. Mesin ini dapat mengirimkan tugas SQL ke MaxCompute. Alternatifnya, Anda dapat menginstal paket pyfg pada mesin apa pun yang memiliki tool pyodps untuk mengirimkan tugas ke kluster MaxCompute.
User-Defined Functions (UDF) kustom dalam tugas SQL memerlukan beberapa resource, seperti library bersama FG, file konfigurasi seperti fg.json, kamus, library operator kustom, dan file kode UDF (.py). Anda harus mengunggah semua resource tersebut ke kluster MaxCompute, tempat resource tersebut disimpan dalam sistem file terdistribusi. Saat tugas dijalankan, setiap worker mengunduh resource ini dari sistem file terdistribusi dan memuatnya ke memori.
Beberapa resource, seperti library bersama FG dan file kode UDF, digunakan bersama oleh beberapa tugas. Saat Anda mengatur force_update_resource=True, resource asli dihapus sebelum yang baru diunggah. Proses ini menciptakan jeda waktu yang dapat memengaruhi tugas lain yang sedang berjalan.