Gunakan node ODPS MR di DataWorks untuk menjadwalkan pekerjaan MaxCompute MapReduce dan mengintegrasikannya dengan node lain dalam pipa data Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Mengunggah, melakukan commit, dan menerapkan resource JAR yang diperlukan. Lihat Buat dan gunakan resource MaxCompute.
Membuat node ODPS MR. Lihat Buat dan kelola node MaxCompute.
Unggah, lakukan commit, dan terapkan resource JAR sebelum menulis kode pada node ODPS MR.
Versi API MaxCompute MapReduce
MapReduce adalah kerangka kerja pemrograman untuk komputasi terdistribusi yang mengintegrasikan logika bisnis pengguna dengan komponen MapReduce bawaan guna menghasilkan program komputasi terdistribusi lengkap, sehingga pekerjaan dapat berjalan secara konkuren pada kluster Hadoop.
MaxCompute menyediakan dua versi API MapReduce:
| Versi API | Deskripsi |
|---|---|
| MaxCompute MapReduce | API MapReduce native. Berjalan cepat dan tidak mengekspos sistem file. |
| Extended MaxCompute MapReduce (MR2) | Ekstensi dari MaxCompute MapReduce yang mendukung logika penjadwalan pekerjaan kompleks. Menggunakan implementasi yang sama dengan MaxCompute MapReduce. |
Untuk perbandingan lengkap, lihat Ikhtisar.
Batasan
Untuk batasan yang berlaku pada task MaxCompute MapReduce, lihat Batasan.
Contoh WordCount
Contoh ini menghitung frekuensi kemunculan setiap string dalam tabel wc_in dan menuliskan hasilnya ke tabel wc_out.
Langkah 1: Unggah resource JAR
Unggah, lakukan commit, dan terapkan mapreduce-examples.jar sebagai resource MaxCompute. Lihat Buat dan gunakan resource MaxCompute.
Untuk detail implementasi di dalam mapreduce-examples.jar, lihat Contoh WordCount.
Langkah 2: Tulis dan jalankan kode
Masukkan kode berikut pada 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.
drop table if exists dual;
create table dual(id bigint); -- Jika tidak ada tabel dual di ruang kerja saat ini, buat tabel dual.
--- Inisialisasi tabel dual.
insert overwrite table dual select count(*)from dual;
--- Masukkan data sampel ke tabel 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 diunggah. Untuk mereferensikan resource, temukan resource JAR di daftar resource, klik kanan resource JAR tersebut, lalu pilih Reference Resources.
--@resource_reference{"mapreduce-examples.jar"}
jar -resources mapreduce-examples.jar -classpath ./mapreduce-examples.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_outPerintah jar menjalankan kelas WordCount dari mapreduce-examples.jar. Perintah ini membaca data dari wc_in dan menuliskan hasil ke wc_out.
| Parameter | Deskripsi |
|---|---|
--@resource_reference{"mapreduce-examples.jar"} | Ditambahkan secara otomatis ketika Anda mengklik kanan nama resource dan memilih Reference Resources. |
-resources mapreduce-examples.jar | Nama resource JAR yang direferensikan. |
-classpath ./mapreduce-examples.jar | Path ke resource JAR. Format: ./ diikuti nama resource. Untuk mereferensikan beberapa JAR, pisahkan dengan koma: -classpath ./xxxx1.jar,./xxxx2.jar. |
com.aliyun.odps.mapred.open.example.WordCount | Nama lengkap kelas utama yang akan dijalankan. |
wc_in | Tabel input. |
wc_out | Tabel output. |
Saat pekerjaan selesai, hasil yang dikembalikan adalah OK.
Langkah 3: Verifikasi hasil
Kueri tabel output menggunakan node ODPS SQL untuk mengonfirmasi hasilnya:
select * from wc_out;Output yang diharapkan:
+------------+------------+
| key | cnt |
+------------+------------+
| package | 1 |
| pad | 1 |
| problem | 1 |
| project | 1 |
| val_a | 2 |
| val_pro | 2 |
+------------+------------+Setiap string unik dari wc_in muncul sebagai baris di wc_out, dengan cnt menunjukkan jumlah kemunculannya.
Contoh lainnya
Untuk kasus penggunaan MapReduce selain WordCount, lihat topik berikut:
Langkah selanjutnya
Setelah mengembangkan node, lengkapi langkah-langkah berikut sebelum masuk ke produksi:
Konfigurasikan properti penjadwalan: Atur pengaturan rerun dan dependensi penjadwalan agar sistem menjalankan task sesuai jadwal. Lihat Ikhtisar.
Debug node: Uji logika kode untuk memastikan menghasilkan output yang diharapkan. Lihat Prosedur debugging.
Terapkan node: Setelah semua pengembangan selesai, terapkan node tersebut. Sistem kemudian akan menjadwalkannya secara otomatis berdasarkan properti yang dikonfigurasi. Lihat Terapkan node.
Untuk isu umum, lihat FAQ tentang MaxCompute MapReduce.