All Products
Search
Document Center

DataWorks:Kembangkan tugas MaxCompute MapReduce

Last Updated:Apr 23, 2026

MaxCompute menyediakan antarmuka pemrograman MapReduce. Anda dapat membuat node ODPS MR, menjadwalkannya, dan menggunakan API Java MapReduce untuk menulis program MapReduce guna memproses data di MaxCompute.

Prasyarat

Penting

Anda harus mengunggah, mengirimkan, dan menerbitkan resource yang diperlukan sebelum membuat node ODPS MR.

Latar Belakang

MapReduce adalah kerangka kerja pemrograman untuk aplikasi terdistribusi. Kerangka ini menggabungkan logika bisnis yang ditulis pengguna dengan komponen bawaan menjadi program terdistribusi lengkap yang berjalan secara konkuren pada kluster Hadoop. MaxCompute menyediakan dua versi antarmuka pemrograman MapReduce. Untuk informasi selengkapnya, lihat MapReduce.

  • MaxCompute MapReduce: Antarmuka native MaxCompute yang menawarkan eksekusi cepat, pengembangan cepat, dan tidak mengekspos sistem file.

  • Extended MaxCompute MapReduce (MR2): Ekstensi dari MaxCompute MapReduce yang mendukung logika penjadwalan pekerjaan lebih kompleks dengan implementasi yang sama seperti antarmuka native.

Di DataWorks, Anda dapat menggunakan node ODPS MR untuk menjadwalkan, menjalankan, dan mengintegrasikan tugas MaxCompute MapReduce dengan pekerjaan lainnya.

Batasan

Untuk batasan node ODPS MR, lihat Batasan penggunaan.

Contoh: Pekerjaan WordCount sederhana

Contoh berikut menunjukkan penggunaan node ODPS MR untuk menghitung kemunculan setiap string dalam tabel wc_in dan menulis hasilnya ke tabel wc_out.

  1. Unggah, kirimkan, dan terbitkan resource mapreduce-examples.jar. Untuk informasi selengkapnya, lihat Buat dan gunakan resource MaxCompute.

    Catatan

    Untuk informasi selengkapnya tentang logika implementasi dalam paket mapreduce-examples.jar, lihat Contoh WordCount.

  2. Masukkan kode berikut ke dalam node ODPS MR dan jalankan.

    -- Buat tabel input.
    CREATE TABLE if not exists wc_in (key STRING, value STRING);
    -- Buat tabel output.
    CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT);
        --- Buat tabel dual sistem.
        drop table if exists dual;
        create table dual(id bigint); -- Jika tabel semu ini tidak ada di ruang kerja, Anda harus membuatnya dan menginisialisasi data.
        --- Inisialisasi data di tabel semu sistem.
        insert overwrite table dual select count(*)from dual;
        --- Masukkan data sampel ke tabel input wc_in.
        insert overwrite table wc_in select * from (
        select 'project','val_pro' from dual 
        union all 
        select 'problem','val_pro' from dual
        union all 
        select 'package','val_a' from dual
        union all 
        select 'pad','val_a' from dual
          ) b;
    -- Referensikan resource JAR yang baru saja Anda unggah. Anda dapat menemukan resource ini di daftar resource, klik kanan resource tersebut, lalu pilih Referensi Resource.
    --@resource_reference{"mapreduce-examples.jar"}
    jar -resources mapreduce-examples.jar -classpath ./mapreduce-examples.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out

    Kode tersebut mencakup pernyataan dan parameter berikut:

    • --@resource_reference: Anda dapat mengklik kanan nama resource dan memilih Insert Resource Path untuk menghasilkan pernyataan ini secara otomatis.

    • -resources: Nama file resource JAR yang direferensikan.

    • -classpath: Jalur ke paket JAR. Karena resource sudah direferensikan, jalurnya mengarah ke file JAR di direktori saat ini (./).

    • com.aliyun.odps.mapred.open.example.WordCount: Nama lengkap kelas utama yang akan dieksekusi dari file JAR.

    • wc_in: Nama tabel input untuk pekerjaan MapReduce. Tabel ini dibuat dalam kode sebelumnya.

    • wc_out: Nama tabel output untuk pekerjaan MapReduce. Tabel ini dibuat dalam kode sebelumnya.

    • Jika pekerjaan MapReduce memerlukan beberapa resource JAR, pisahkan jalurnya dengan koma, misalnya -classpath ./xxxx1.jar,./xxxx2.jar.

    Hasil: OK

  3. Di node ODPS SQL, jalankan perintah berikut untuk mengkueri data di tabel wc_out.

    select * from wc_out;

    Output yang diharapkan:

    +------------+------------+
    | key        | cnt        |
    +------------+------------+
    | package    | 1          |
    | pad        | 1          |
    | problem    | 1          |
    | project    | 1          |
    | val_a      | 2          |
    | val_pro    | 2          |
    +------------+------------+

Contoh lanjutan

Untuk informasi tentang cara mengembangkan tugas MaxCompute MapReduce untuk skenario lainnya, lihat topik berikut:

Langkah selanjutnya

Setelah menyelesaikan pengembangan tugas pada node saat ini, Anda dapat melakukan operasi berikut:

  • Konfigurasi penjadwalan: Konfigurasikan properti penjadwalan periodik untuk node tersebut. Untuk tugas yang harus dijalankan secara berkala, Anda harus mengonfigurasi properti seperti pengaturan ulang eksekusi (rerun) dan dependensi penjadwalan. Untuk informasi selengkapnya, lihat Ikhtisar konfigurasi penjadwalan tugas.

  • Debugging tugas: Uji dan jalankan kode node untuk memverifikasi bahwa logikanya benar. Untuk informasi selengkapnya, lihat Proses debugging tugas.

  • Penerapan tugas: Setelah selesai pengembangan, terapkan node tugas tersebut. Node yang telah diterapkan kemudian akan berjalan secara periodik sesuai konfigurasi penjadwalannya. Untuk informasi selengkapnya, lihat Terapkan tugas.