全部产品
Search
文档中心

MaxCompute:Gunakan node PyODPS untuk menghindari pengunduhan data ke direktori lokal

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan node PyODPS untuk menghindari pengunduhan data ke direktori lokal dan memproses data secara online.

Informasi latar belakang

PyODPS menyediakan beberapa metode untuk mengunduh data ke direktori lokal. Anda dapat mengunduh data ke direktori lokal untuk diproses, lalu mengunggahnya kembali ke MaxCompute. Namun, pemrosesan data lokal tidak efisien karena kemampuan pemrosesan paralel masif dari MaxCompute tidak dapat dimanfaatkan jika data diunduh ke direktori lokal. Jika volume data lebih besar dari 10 MB, disarankan untuk tidak mengunduh data ke direktori lokal. Berikut adalah metode yang dapat digunakan:

  • Gunakan metode head, tail, atau to_pandas. Dalam sebagian besar kasus, gunakan metode head atau tail untuk mendapatkan volume data yang kecil. Jika Anda ingin mendapatkan volume data yang besar, gunakan metode persist untuk menyimpan data dalam tabel MaxCompute. Untuk informasi lebih lanjut, lihat Eksekusi.

  • Gunakan metode open_reader. Anda dapat menjalankan open_reader pada tabel atau instance SQL untuk mendapatkan data. Untuk volume data besar, disarankan menggunakan PyODPS DataFrame atau MaxCompute SQL. Objek PyODPS DataFrame dibuat berdasarkan tabel MaxCompute, memberikan efisiensi lebih tinggi dibandingkan pemrosesan data lokal.

Kode contoh

Ubah string JSON menjadi beberapa baris, dengan setiap baris terdiri dari kunci dan nilainya.

  • Untuk pengujian lokal, gunakan metode head untuk mendapatkan volume data kecil.

    In [12]: df.head(2)
                   json
    0  {"a": 1, "b": 2}
    1  {"c": 4, "b": 3}
    
    In [14]: from odps.df import output
    
    In [16]: @output(['k', 'v'], ['string', 'int'])
        ...: def h(row):
        ...:     import json
        ...:     for k, v in json.loads(row.json).items():
        ...:         yield k, v
        ...:   
    
    In [21]: df.apply(h, axis=1).head(4)
    
       k  v
    0  a  1
    1  b  2
    2  c  4
    3  b  3
  • Untuk produksi online, gunakan metode persist untuk menyimpan volume data besar dalam tabel MaxCompute.

    In [14]: from odps.df import output
    
    In [16]: @output(['k', 'v'], ['string', 'int'])
        ...: def h(row):
        ...:     import json
        ...:     for k, v in json.loads(row.json).items():
        ...:         yield k, v
        ...:   
    
    In [21]: df.apply(h, axis=1).persist('my_table')