All Products
Search
Document Center

MaxCompute:Pekerjaan berjalan dalam mode lokal

Last Updated:Mar 26, 2026

Mode lokal memungkinkan Anda melakukan debug pekerjaan MapReduce di mesin lokal sebelum mengirimkannya ke kluster terdistribusi. Alih-alih melakukan redeploy ke kluster setiap kali terjadi perubahan kode, jalankan pekerjaan secara lokal dengan flag -local dan periksa hasilnya secara langsung.

Cara kerja

Tambahkan flag -local ke perintah jar untuk menjalankan pekerjaan secara lokal. Klien MaxCompute:

  1. Mengunduh metadata dan data dari tabel input, metadata tabel output, serta resource yang diperlukan dari MaxCompute ke direktori lokal bernama warehouse.

  2. Menjalankan beberapa tugas map dan reduce secara berurutan (tidak paralel).

  3. Menulis hasil ke file dalam direktori warehouse.

Pada eksekusi berikutnya, jika tabel input dan resource sudah ada di warehouse, klien akan membacanya langsung—tanpa perlu mengunduh ulang.

Catatan

Data hanya dapat diunduh dari MaxCompute untuk pekerjaan MapReduce yang dijalankan dalam mode lokal.

Mode lokal vs. mode terdistribusi

DimensiMode lokalMode terdistribusi
Baris inputMaksimum 100 barisTidak terbatas
Ukuran sumber dayaTidak terbatasTerbatas (lihat Batas MapReduce)
KeamananTidak ada batasanSandbox Java berlaku untuk MapReduce dan user-defined function (UDF)

Jalankan pekerjaan dalam mode lokal

Contoh berikut menjalankan program WordCount terhadap tabel wc_in dan menulis output ke wc_out.

Langkah 1: Jalankan perintah jar

odps:my_project> jar -l com.aliyun.odps.mapred.example.WordCount wc_in wc_out

Untuk kode contoh WordCount lengkap, lihat WordCount.

Langkah 2: Periksa output

Eksekusi yang berhasil mencetak ringkasan beserta counter:

Summary:
counters: 10
    map-reduce framework
            combine_input_groups=2
            combine_output_records=2
            map_input_bytes=4
            map_input_records=1
            map_output_records=2
            map_output_[wc_out]_bytes=0
            map_output_[wc_out]_records=0
            reduce_input_groups=2
            reduce_output_[wc_out]_bytes=8
            reduce_output_[wc_out]_records=2
OK

Langkah 3: Verifikasi hasil di direktori warehouse

Eksekusi pertama membuat direktori warehouse di path saat ini dengan struktur berikut:

<warehouse>
   |____my_project (direktori proyek)
          |____ <__tables__>
          |       |__wc_in (direktori data tabel)
          |       |      |____ data (file)
          |       |      |
          |       |      |____ <__schema__> (file)
          |       |__wc_out (direktori data tabel)
          |               |____ data (file)
          |               |
          |               |____ <__schema__> (file)
          |
          |____ <__resources__>
                  |
                  |___table_resource_name (resource tabel)
                  |         |____<__ref__>
                  |
                  |___ file_resource_name (resource file)
  • Direktori pada level yang sama dengan my_project merepresentasikan proyek.

  • Direktori pada level yang sama dengan wc_in dan wc_out merepresentasikan tabel data. Data tabel yang dibaca atau ditulis oleh perintah jar disimpan pada level ini.

Verifikasi data input wc_in

File <__schema__> menyimpan metadata tabel. Untuk wc_in:

my_project.wc_in,key:STRING,value:STRING

File data berisi baris-baris yang diunduh:

0,2

Klien mengunduh metadata dan sebagian data tabel dari MaxCompute lalu menyimpannya ke file-file tersebut. Eksekusi berikutnya membaca langsung dari wc_in—tidak perlu unduh ulang.

Verifikasi data output wc_out

Skema untuk wc_out:

my_project.wc_out,key:STRING,cnt:BIGINT

Setelah pekerjaan selesai, file data berisi hasil sebagai berikut:

0,1
2,1

Format file skema

File <__schema__> mendefinisikan struktur tabel:

project=local_project_name
table=local_table_name
columns=col1_name:col1_type,col2_name:col2_type
partitions=p1:STRING,p2:BIGINT    -- opsional

Aturan format:

  • Pisahkan nama kolom dan tipenya dengan tanda titik dua (:).

  • Pisahkan kolom-kolom dengan koma (,).

  • Deklarasikan project_name.table_name di awal file, dipisahkan dari definisi kolom dengan koma. Contoh: project_name.table_name,col1_name:col1_type,col2_name:col2_type

Catatan penggunaan

  • Edit file <__schema__> dan data secara langsung untuk menyediakan data uji kustom tanpa perlu mengunduh dari MaxCompute.

  • Jika klien mendeteksi bahwa direktori tabel sudah ada di warehouse, pengunduhan untuk tabel tersebut akan dilewati. Artinya, direktori tabel lokal dapat mereferensikan tabel yang tidak ada di MaxCompute.

Langkah selanjutnya

  • WordCount — kode contoh lengkap untuk contoh WordCount yang digunakan dalam topik ini

  • Batas MapReduce — batas ukuran resource dan batasan lain yang berlaku dalam mode terdistribusi