全部产品
Search
文档中心

MaxCompute:Gunakan PyODPS di lingkungan lokal

更新时间:Dec 03, 2025

PyODPS adalah SDK Python dari Alibaba Cloud yang memungkinkan pengembang menggunakan MaxCompute untuk pemrosesan dan analisis data besar. Topik ini menjelaskan cara menggunakan PyODPS di lingkungan lokal untuk melakukan operasi tabel, memuat data, dan menjalankan kueri SQL.

Prasyarat

Prosedur

  1. Buka editor Python dan buat file Python.

    Catatan

    Jika editor Python belum diinstal secara lokal, Anda dapat membuat file dengan ekstensi .py.

  2. Kembangkan kode task PyODPS.

    Setelah file dibuat, Anda dapat merujuk ke bagian berikut untuk contoh sederhana yang menunjukkan fitur utama PyODPS.

    Untuk informasi lebih lanjut tentang penggunaan PyODPS, lihat Ikhtisar operasi dasar dan DataFrame (Tidak disarankan). Anda juga dapat merujuk ke topik Gunakan node PyODPS untuk segmentasi kata bahasa Tiongkok Jieba sebagai contoh operasi end-to-end sederhana.

  3. Simpan file Python dan jalankan secara lokal.

Inisialisasi titik masuk ODPS

Penting

Tentukan secara manual titik masuk ODPS. Kode berikut memberikan contohnya.

import os
from odps import ODPS

o = ODPS(
    # (Disarankan) Pastikan variabel lingkungan telah dikonfigurasi.
    # Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID diatur ke ID AccessKey Anda.
    access_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
    # Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur ke Rahasia AccessKey Anda.
    secret_access_key=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
    
    # (Tidak disarankan) Jika variabel lingkungan belum dikonfigurasi, gunakan format berikut sebagai gantinya.
    # access_id='your-aliyun-access-key-id',
    # secret_access_key= 'your-aliyun-access-key-secret',
    
    project='your-default-project',
    endpoint='your-end-point',
)

Parameter

Deskripsi

your-default-project

Masukkan nama proyek MaxCompute Anda. Masuk ke Konsol MaxCompute untuk mendapatkan daftar proyek.

your-end-point

Masukkan Endpoint untuk wilayah dan jenis jaringan Anda.

Sebagai contoh, untuk Endpoint publik di wilayah China (Hangzhou), masukkan https://service.cn-hangzhou.maxcompute.aliyun.com/api.

Penting

Pastikan memilih jenis jaringan yang benar. Jika tidak, koneksi akan gagal.

Setelah konfigurasi ini selesai, Anda dapat menggunakan PyODPS di lingkungan lokal untuk melakukan operasi dasar pada objek ODPS. Operasi tersebut mencakup list, get, exist, create, dan delete. Untuk informasi lebih lanjut tentang penggunaan PyODPS, lihat Ikhtisar operasi dasar dan DataFrame (Tidak disarankan).

Eksekusi SQL

  1. Eksekusi perintah SQL di node PyODPS.

    Di node PyODPS, Anda dapat mengeksekusi perintah SQL menggunakan mode tradisional atau MaxCompute Query Acceleration (MCQA). Fitur ini saat ini mendukung perintah Data Definition Language (DDL) dan Data Manipulation Language (DML). Mode kueri terakselerasi (MCQA) menulis hasil pekerjaan ke cache temporary. Saat Anda menjalankan pekerjaan kueri yang sama lagi, MaxCompute mengembalikan hasil yang di-cache untuk mempercepat eksekusi. Untuk informasi lebih lanjut tentang aturan penagihan, lihat atau Biaya komputasi (pay-as-you-go). Anda dapat memilih mode eksekusi sesuai kebutuhan.

    Catatan

    Anda tidak dapat menggunakan metode seperti execute_sql() dan run_sql() pada objek entry point untuk menjalankan semua jenis pernyataan SQL.

    Anda harus menggunakan metode lain untuk memanggil pernyataan non-DDL atau non-DML. Sebagai contoh, gunakan metode create_table untuk memanggil pernyataan `CREATE TABLE`, dan gunakan metode run_xflow atau execute_xflow untuk memanggil perintah API.

    Gunakan mode tradisional untuk mengeksekusi perintah SQL

    Anda dapat menggunakan execute_sql()/run_sql() untuk mengeksekusi perintah SQL. Kode berikut memberikan contohnya:

    Gunakan metode create_table untuk membuat tabel baru.

    o.create_table('my_t', 'num bigint, id string', if_not_exists=True)

    Gunakan metode execute_sql untuk mengeksekusi kueri SQL.

    result = o.execute_sql('SELECT * FROM pyodps_iris LIMIT 3')
    with result.open_reader() as reader:
        for record in reader:
            print(record)
    
  2. Baca hasil eksekusi SQL di node PyODPS.

    Gunakan open_reader() untuk membaca hasil perintah SQL. Untuk informasi lebih lanjut, lihat Baca hasil eksekusi SQL.

Untuk informasi lebih lanjut tentang operasi terkait SQL di node PyODPS, lihat SQL.

DataFrame

PyODPS menyediakan API DataFrame yang dapat Anda gunakan untuk pemrosesan data. Untuk contoh operasi DataFrame lainnya, lihat DataFrame.

  • Eksekusi

    Untuk mengeksekusi DataFrame, Anda harus secara eksplisit memanggil metode eksekusi langsung, seperti execute atau persist. Kode berikut memberikan contohnya.

    # Panggil metode eksekusi langsung untuk memproses setiap catatan dan mencetak semua data di mana iris.sepalwidth kurang dari 3 dalam tabel pyodps_iris.
    from odps.df import DataFrame
    iris = DataFrame(o.get_table('pyodps_iris'))
    for record in iris[iris.sepalwidth < 3].execute():  
      print(record)
    
  • Cetak informasi detail

    Secara default, proses running node PyODPS di lingkungan lokal tidak mencetak informasi detail, seperti Logview. Untuk mencetak informasi detail seperti Logview, Anda harus mengatur opsi options.verbose secara manual.

    from odps import options
    options.verbose = True
    

Atur parameter runtime (hints)

Untuk mengatur parameter runtime untuk suatu task, gunakan parameter hints, yang berupa dictionary.

o.execute_sql('SELECT * FROM pyodps_iris', hints={'odps.sql.mapper.split.size': 16})

Anda juga dapat mengonfigurasi pengaturan SQL global. Setelah konfigurasi selesai, parameter runtime terkait akan ditambahkan ke setiap eksekusi.

from odps import options
options.sql.settings = {'odps.sql.mapper.split.size': 16}
# Petunjuk ditambahkan berdasarkan konfigurasi global.
o.execute_sql('SELECT * FROM pyodps_iris')

Contoh lengkap

  1. Buat file bernama test-pyodps-local.py di mesin lokal Anda.

  2. Tulis kode contoh.

    import os
    from odps import ODPS
    
    o = ODPS(
        # (Disarankan) Pastikan variabel lingkungan telah dikonfigurasi.
        # Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID diatur ke ID AccessKey Anda.
        access_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        # Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur ke Rahasia AccessKey Anda.
        secret_access_key=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
        
        project='your-default-project',
        endpoint='your-end-point',
    )
    
    # Buat tabel non-partisi bernama my_new_table dengan langsung menentukan nama dan tipe field.
    table = o.create_table('my_new_table', 'num bigint, id string', if_not_exists=True)
    
    # Masukkan data ke tabel non-partisi my_new_table.
    records = [[111, 'aaa'],
               [222, 'bbb'],
               [333, 'ccc'],
               [444, 'Chinese']]
    o.write_table(table, records)
    
    # Baca data dari tabel non-partisi my_new_table.
    for record in o.read_table(table):
        print(record[0], record[1])
    
    # Baca data dari tabel dengan menjalankan pernyataan SQL.
    result = o.execute_sql('SELECT * FROM pyodps_iris LIMIT 3;', hints={'odps.sql.allow.fullscan': 'true'})
    
    # Hapus tabel untuk melepaskan resource.
    table.drop()
    
    print('Baca data dari tabel pyodps_iris menggunakan open_reader:')
    
    # Baca hasil eksekusi SQL.
    with result.open_reader() as reader:
        for record in reader:
            print(record[0], record[1])
    
  3. Jalankan kode Python.

    python test-pyodps-local.py

    Outputnya adalah:

    111 aaa
    222 bbb
    333 ccc
    444 Chinese
    Baca data dari tabel pyodps_iris menggunakan open_reader:
    4.9 3.0
    4.7 3.2
    4.6 3.1