全部产品
Search
文档中心

MaxCompute:Layanan pengemasan otomatis

更新时间:Jun 19, 2025

MaxFrame menyediakan layanan pengemasan otomatis untuk menyederhanakan pengelolaan paket pihak ketiga dalam pengembangan Python. Layanan ini memungkinkan Anda mendeklarasikan dependensi eksternal yang diperlukan selama pengembangan pekerjaan. Saat pekerjaan dijalankan, file dependensi secara otomatis dikemas dan diintegrasikan ke dalam lingkungan pekerjaan tanpa perlu mengunggah paket secara manual.

Peringatan

Jika Anda mengakses MaxFrame menggunakan SDK MaxFrame standar (klien MaxFrame lokal), pastikan versi SDK adalah V0.1.0b5 atau lebih baru. Untuk informasi lebih lanjut tentang cara mengakses MaxFrame, lihat Persiapan.

Deskripsi layanan pengemasan otomatis

MaxFrame memungkinkan Anda menggunakan fungsi with_python_requirements untuk memanggil layanan pengemasan otomatis. Berikut adalah contoh sintaksis:


def with_python_requirements(
    *requirements: str,
    force_rebuild: bool = False,
    prefer_binary: bool = False,
    pre_release: bool = False,
): ...

Penjelasan parameter:

  • requirements: Wajib. Parameter ini digunakan untuk mendeklarasikan satu atau lebih dependensi eksternal. Deklarasi harus sesuai dengan spesifikasi PEP-508 yang digunakan oleh pip, penginstal paket Python. Contoh kode:

  • @with_python_requirements("scikit_learn>1.0", "xgboost>1.0")
  • force_rebuild: Opsional. Parameter ini menentukan apakah akan melakukan pengemasan ulang jika paket pihak ketiga sudah ada selama pengemasan otomatis. Nilai valid:

    • False: Pengemasan ulang tidak dilakukan, tetapi paket yang dihasilkan disimpan sebagai sumber daya sementara yang dihapus setiap hari. Ini adalah nilai default.

    • True: Pengemasan ulang dilakukan, dan sumber daya dari versi terbaru gambar PyPI dipaksa digunakan serta disimpan sebagai sumber daya jangka panjang.

  • prefer_binary: Opsional. Parameter ini menentukan apakah akan mengutamakan pengemasan file roda biner. Nilai valid:

    • False: Sistem tidak mengutamakan pengemasan file roda biner. Ini adalah nilai default.

    • True: Sistem mengutamakan pengemasan file roda biner.

    • null

      Mengatur parameter ini ke True setara dengan efek menentukan --prefer-binary untuk pip, yang mengutamakan pengemasan file roda biner. Efisiensi pengemasan mungkin tinggi, tetapi versi terbaru paket mungkin tidak digunakan.

  • pre_release: Opsional. Parameter ini menentukan apakah file yang dirilis sebelumnya pada fase alpha atau beta dapat dikemas. Nilai valid:

    • false: File yang dirilis sebelumnya pada fase alpha atau beta tidak dapat dikemas. Ini adalah nilai default.

    • True: File yang dirilis sebelumnya pada fase alpha atau beta dapat dikemas.

Contoh kode

Berikut adalah contoh cara mengemas paket pihak ketiga secara otomatis:

from odps import ODPS
from odps.udf import annotate
import os
from odps import ODPS, options
import maxframe.dataframe as md
from maxframe import new_session

o = ODPS(
      # Setel variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID ke ID AccessKey akun Alibaba Cloud Anda.
      # Setel variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET ke Rahasia AccessKey akun Alibaba Cloud Anda.
      # Kami menyarankan agar Anda tidak langsung menggunakan string dari ID AccessKey dan Rahasia AccessKey Anda.
      os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
      os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
      project='your-default-project',
      endpoint='your-end-point'
)

session = new_session(o)
data = [["abcd"], ["efgh"], ["ijkl"], ["mno"]]
md_df = md.DataFrame(data, columns=["col1"])
# Panggil layanan pengemasan otomatis.
from maxframe.udf import with_python_requirements
@with_python_requirements("jieba==0.40 cloudpickle pandas")
def process(row):
        import jieba
        row["col1"] = row["col1"] + "_" + jieba.__version__
        return row
md_result = (
        md_df.apply(
            process,
            axis=1,
            result_type="expand",
            output_type="dataframe",
            dtypes=md_df.dtypes.copy(),
        )
        .execute()
        .fetch()
    )