Tutorial Hadoop Pig: Apa itu Apache Pig? Architekstur, Contoh

โšก Ringkasan Cerdas

Apache Pig adalah platform tingkat tinggi untuk menganalisis kumpulan data besar di Hadoop, yang menggabungkan bahasa aliran data Pig Latin dengan runtime yang mengkompilasi setiap skrip menjadi MapReduce, Tez, atau Spark pekerjaan secara otomatis.

  • ๐Ÿ”˜ Dua komponen: Pig Latin menyediakan bahasanya dan runtime Pig mengubah setiap skrip menjadi pekerjaan klaster.
  • โ˜‘๏ธ Jenis eksekusi: Rilis saat ini menawarkan enam tipe eksekusi yang dipilih dengan flag -x, mulai dari lokal hingga Spark.
  • โœ… Prasyarat: Instalasi Hadoop yang berfungsi dengan baik ditambah Java, dengan HADOOP_HOME dan JAVA_HOME yang diekspor, harus ada terlebih dahulu.
  • ๐Ÿงช Contoh yang dikerjakan: Skrip yang terdiri dari empat pernyataan memuat file SalesJan2009.csv, mengelompokkannya berdasarkan negara, dan menyimpan jumlah produk.
  • ๏ธ Model data: Tipe skalar ditambah tuple, bag, dan map memungkinkan Pig untuk membaca file bersarang dan file dengan struktur longgar.
  • ๐Ÿ“ˆ Versi saat ini: Apache Pig 0.18.0 dirilis pada September 2025 dengan Hadoop 3, Tez, Spark ke Python dukungan 3.

Tutorial Hadoop Pig yang membahas arsitektur Apache Pig, instalasi, dan contoh Pig Latin yang telah dikerjakan.

Tutorial ini dimulai dengan gagasan di balik Apache Pig, kemudian membahas cara menginstalnya dan menjalankan skrip Pig Latin lengkap dari awal hingga akhir.

Apa itu Babi Apache?

Babi adalah hewan tingkat tinggi bahasa pemrograman Berguna untuk menganalisis kumpulan data besar. Pig adalah hasil upaya pengembangan di Yahoo!

Dalam kerangka kerja MapReduce, program perlu diterjemahkan ke dalam serangkaian tahapan Map dan Reduce. Namun, ini bukanlah model pemrograman yang familiar bagi analis data. Oleh karena itu, untuk menjembatani kesenjangan ini, diperlukan sebuah solusi abstrak.tracBangunan bernama Pig dibangun di atas Hadoop.

Apache Pig memungkinkan orang untuk lebih fokus pada analisis kumpulan data besar dan menghabiskan lebih sedikit waktu untuk menulis program MapReduce. Mirip dengan babi yang memakan apa saja, bahasa pemrograman Apache Pig dirancang untuk bekerja pada semua jenis data. Itulah mengapa namanya Pig! Maskot proyek di bawah ini menegaskan hal yang sama.

Babi kartun digunakan sebagai maskot Apache Pig, yang menggambarkan bahwa Pig memproses segala jenis data.

Proyek ini masih aktif. Apache Pig 0.18.0 Dirilis pada 15 September 2025 dan menambahkan dukungan untuk Hadoop 3, Tez 0.10, Hive 3, Spark 3, HBase 2 dan Python tahun 3, menurut Halaman rilis Apache PigPanduan di bawah ini awalnya ditulis berdasarkan versi 0.12.1 yang jauh lebih lama, jadi beberapa langkah memiliki catatan karena versi terbaru berperilaku berbeda.

Babi Architekstur

Arsitektur Pig terdiri dari dua komponen:

  1. babi latin, yang merupakan bahasa
  2. Lingkungan waktu proses, untuk menjalankan program Pig Latin.

Program Pig Latin terdiri dari serangkaian operasi atau transformasi yang diterapkan pada data masukan untuk menghasilkan keluaran. Operasi-operasi ini menggambarkan aliran data yang diterjemahkan ke dalam representasi yang dapat dieksekusi oleh lingkungan eksekusi Hadoop Pig. Di baliknya, hasil dari transformasi ini adalah serangkaian PetaKurangi pekerjaan yang tidak disadari oleh programmer. Jadi, dengan kata lain, Pig di Hadoop memungkinkan programmer untuk fokus pada data daripada pada sifat eksekusi.

Pig Latin adalah bahasa yang relatif kaku yang menggunakan kata kunci yang familiar dari pengolahan data, misalnya, Gabung, Kelompokkan, dan Saring. Diagram di bawah ini tracsebuah skrip dari shell Grunt melewati parser, optimizer, dan compiler dalam perjalanannya menuju mesin eksekusi.

Diagram arsitektur Apache Pig yang menunjukkan skrip Pig Latin yang melewati parser, optimizer, dan compiler menuju mesin eksekusi.

Mode eksekusi

Pig di Hadoop memiliki dua mode eksekusi, dan panduan instalasi di bawah ini menggunakan keduanya:

  1. Mode lokal: Dalam mode ini, bahasa Hadoop Pig berjalan dalam satu proses tunggal. FMV dan memanfaatkan sistem file lokal. Mode ini hanya cocok untuk analisis dataset kecil menggunakan Pig di Hadoop.
  2. Mode MapReduce: Dalam mode ini, kueri yang ditulis dalam Pig Latin diterjemahkan menjadi pekerjaan MapReduce dan dijalankan pada klaster Hadoop (klaster tersebut dapat berupa pseudo-distributed atau fully distributed). Mode MapReduce dengan klaster fully distributed berguna untuk menjalankan Pig pada dataset besar.

Kedua hal itu adalah pasangan klasik. Rilis terbaru sebenarnya menampilkan enam jenis eksekusi, atau exectypes, yang masing-masing dipilih dengan cara yang sama. -x bendera, seperti yang didokumentasikan dalam Panduan Memulai Pig 0.18.0.

Exectype perintah Di mana pekerjaan berlangsung
Lokal babi -x lokal Sebuah JVM tunggal yang berinteraksi dengan sistem file lokal.
Tez lokal babi -x tez_lokal Sebuah JVM tunggal yang menggunakan runtime Tez (eksperimental)
Spark lokal babi -x spark_local Sebuah JVM tunggal yang menggunakan Spark waktu eksekusi (eksperimental)
PetaKurangi babi atau babi -x mapreduce Klaster Hadoop dengan HDFS; ini adalah pengaturan default.
tesis babi -x tez Klaster Hadoop yang menjalankan mesin Tez.
Spark babi -x percikan A SparkKlaster YARN atau Mesos dengan HDFS

Tipe Data Bahasa Pig Latin dan Operatorso

Sebelum menulis skrip, ada baiknya mengetahui apa yang dapat ditampung oleh Pig dan apa yang dapat dilakukannya terhadap data tersebut. Model datanya sepenuhnya bersarang (nested), yang memungkinkan Pig membaca file log dan input lain yang strukturnya tidak terlalu jelas yang akan ditolak oleh tabel relasional.

Bahasa Pig Latin menawarkan dua kelompok tipe:

  • Tipe skalar: int, long, float, double, chararray, bytearray, boolean, datetime, biginteger ke bigdecimalSkrip contoh selanjutnya mendeklarasikan setiap kolom sebagai chararray.
  • Jenis kompleks: a tupel adalah himpunan bidang yang terurut dan berperilaku seperti baris; sebuah tas adalah koleksi tupel yang tidak terurut dan berperilaku seperti tabel; peta adalah himpunan pasangan kunci dan nilai yang kuncinya harus berupa chararray.

Para operator terbagi dalam sejumlah kecil pekerjaan, dan segelintir dari mereka mengoperasikan hampir setiap jalur pipa:

Operator Apa yang dilakukannya
MUAT / SIMPAN Baca sebuah relasi dari sistem file dan tulis kembali hasilnya.
FILTER Hanya simpan tuple yang sesuai dengan suatu kondisi.
UNTUK SETIAP โ€ฆ HASILKAN Kerjakan kolom demi kolom, membangun bidang baru.
GRUP / KOGROUP Kelompokkan satu relasi, atau dua relasi atau lebih, berdasarkan sebuah kunci.
BERGABUNG Gabungkan relasi dengan inner join atau outer join.
PERSATUAN / PERPISAHAN Gabungkan relasi, atau pisahkan satu relasi menjadi beberapa bagian.
URUTKAN BERDASARKAN / KATEGORI / BATAS Urutkan, hilangkan duplikat, dan batasi jumlah tuple.
MENCURAHKAN / MENGGAMBARKAN / MENJELASKAN / MENGGAMBARKAN Periksa hasil, skema, rencana eksekusi, dan contoh jalankan.

Keempat operator inspeksi tersebut juga memiliki pintasan Grunt, yang menghemat waktu.ping selama proses debugging: \d untuk TEMPAT PEMBUANGAN, \de untuk MENJELASKAN, \e untuk MENJELASKAN dan \i untuk MENGGAMBARKAN.

Prasyarat

Pig adalah alat sisi klien. Ia mengurai skrip, merencanakan pekerjaan, dan mengirimkan tugas, tetapi tidak menyediakan penyimpanan atau klaster sendiri, sehingga instalasi Hadoop yang berfungsi harus ada terlebih dahulu. Daftar persyaratan Apache cukup singkat.

Komponen Kebutuhan Mengapa itu dibutuhkan
Hadoop Hadoop 2.x atau 3.x, dengan HADOOP_HOME diekspor. Menyediakan HDFS dan mesin eksekusi. Tanpa HADOOP_HOME, Pig 0.18.0 akan kembali menggunakan Hadoop 2.7.3 yang tertanam.
Java Java Versi 1.7 atau lebih baru, dengan JAVA_HOME diatur ke direktori root instalasi. Pig dan daemon Hadoop adalah Java program
Python (Opsional) Python 2.7 Hanya dibutuhkan untuk streaming Python fungsi yang ditentukan pengguna
Semut (opsional) Semut 1.8 Hanya diperlukan saat membangun atau mengkompilasi ulang Pig dari kode sumber.

Ada dua poin praktis yang menyertai daftar tersebut. Pertama, jalankan semuanya sebagai pengguna Linux yang sudah memiliki direktori home di HDFS dan izin untuk menulis ke dalamnya; tutorial ini menggunakan hduserPertama, akun yang dibuat selama pengaturan Hadoop. Kedua, mulai klaster sebelum meluncurkan Pig dalam mode MapReduce, karena Pig akan langsung gagal jika NameNode dan ResourceManager mati. Jika Hadoop belum diinstal, ikuti langkah-langkah berikut. cara menginstal Hadoop pertama.

Cara Mengunduh dan Menginstal Pig

Sekarang dalam tutorial Apache Pig ini, kita akan mempelajari cara mengunduh dan menginstal Pig:

Sebelum kita memulai proses sebenarnya, pastikan Anda telah menginstal Hadoop. Ubah pengguna menjadi 'hduser' (ID yang digunakan saat mengkonfigurasi Hadoop; Anda dapat beralih ke ID pengguna yang digunakan selama konfigurasi Hadoop Anda sendiri).

Perintah terminal untuk mengganti pengguna Linux ke hduser sebelum instalasi Pig dimulai

Langkah 1) Unduh rilis stabil terbaru Pig Hadoop dari salah satu situs mirror yang tersedia di

https://pig.apache.org/releases.html

Pilih file tar.gz (dan bukan src.tar.gz) untuk diunduh, seperti yang ditunjukkan di bawah ini.

Apache Pig merilis halaman unduhan dengan distribusi tar.gz untuk dipilih.

Langkah 2) Setelah pengunduhan selesai, navigasikan ke direktori yang berisi file tar yang diunduh dan pindahkan file tar tersebut ke lokasi tempat Anda ingin menginstal Pig Hadoop. Dalam hal ini, kita akan memindahkannya ke /usr/local.

Terminal memindahkan file tar Pig yang diunduh ke direktori /usr/local

Pindah ke direktori yang akan berisi file Pig Hadoop.

cd /usr/local

Extracisi file tar seperti di bawah ini.

sudo tar -xvf pig-0.12.1.tar.gz

Terminal extracMengekstraksi arsip Pig dengan perintah sudo tar -xvf

Langkah 3) Ubah file ~/.bashrc untuk menambahkan variabel lingkungan yang berkaitan dengan Pig.

Buka file ~/.bashrc di editor teks pilihan Anda dan lakukan modifikasi di bawah ini.

export PIG_HOME=<Installation directory of Pig>
export PATH=$PIG_HOME/bin:$HADOOP_HOME/bin:$PATH

Editor teks yang menampilkan baris ekspor PIG_HOME dan PATH yang ditambahkan ke file bashrc.

Langkah 4) Sekarang, jalankan konfigurasi lingkungan ini menggunakan perintah di bawah ini.

. ~/.bashrc

Terminal menjalankan perintah `source` pada file bashrc agar variabel lingkungan Pig yang baru dapat berlaku.

Langkah 5) Kita perlu mengkompilasi ulang Pig agar mendukung Hadoop 2.2.0.

Berikut langkah-langkah untuk melakukannya.

Buka direktori utama Pig.

cd $PIG_HOME

Instal Ant.

sudo apt-get install ant

Terminal menginstal Apache Ant dengan apt-get sebagai persiapan untuk mengkompilasi ulang Pig.

Catatan: Proses pengunduhan akan dimulai dan akan memakan waktu sesuai dengan kecepatan internet Anda.

Kompilasi ulang Pig.

sudo ant clean jar-all -Dhadoopversion=23

Terminal yang menjalankan target Ant yang mengkompilasi ulang Pig untuk lini Hadoop 2.

Harap dicatat bahwa dalam proses kompilasi ulang ini, beberapa komponen diunduh, jadi sistem harus terhubung ke internet.

Selain itu, jika proses ini macet di suatu tempat dan Anda tidak melihat pergerakan apa pun pada command prompt selama lebih dari 20 menit, tekan Ctrl + c dan jalankan kembali perintah yang sama.

Dalam kasus kami, dibutuhkan waktu 20 menit.

Output terminal dari kompilasi ulang Pig, yang memakan waktu sekitar dua puluh menit dalam contoh ini.

Langkah kompilasi ulang ini termasuk dalam era 0.12.1, ketika jar yang dikirimkan dibangun berdasarkan Hadoop 1 dan -Dhadoopversion=23 flag tersebut mengalihkan build Ant ke lini Hadoop 0.23 dan 2.x. Apache Pig 0.18.0 menyertakan binary yang sudah berjalan di Hadoop 2.7 dan di atasnya serta Hadoop 3, jadi pada rilis terbaru Anda biasanya dapat mengekstrak tarball dan langsung menuju ke pengujian di bawah ini.

Langkah 6) Uji instalasi Pig menggunakan perintah

pig -help

Output dari perintah pig -help yang menampilkan opsi baris perintah Pig setelah instalasi.

Contoh Skrip Babi

Setelah Pig terpasang, sisa tutorial Apache Pig ini akan menjalankan skrip lengkap. Kita akan menggunakan Skrip Pig untuk mencari jumlah produk yang terjual di setiap negara.

Masukan: Kumpulan data masukan kami berupa file CSV, PenjualanJan2009.csv.

Langkah 1) Mulai Hadoop.

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Langkah 2) Pig dalam Big Data mengambil file dari HDFS dalam mode MapReduce dan menyimpan hasilnya kembali ke HDFS.

Salin file SalesJan2009.csv (yang tersimpan di sistem file lokal di ~/input/SalesJan2009.csv) ke direktori utama HDFS (Hadoop Distributed File System).

Dalam contoh Apache Pig ini, file berada di folder input. Jika file tersimpan di lokasi lain, berikan nama lokasi tersebut sebagai gantinya.

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/input/SalesJan2009.csv /

Terminal sedang menyalin file SalesJan2009.csv dari sistem file lokal ke HDFS.

Verifikasi apakah file tersebut benar-benar telah disalin atau belum.

$HADOOP_HOME/bin/hdfs dfs -ls /

Daftar root HDFS yang mengkonfirmasi bahwa file SalesJan2009.csv telah disalin

Langkah 3) Konfigurasi Babi.

Pertama, masuk ke direktori $PIG_HOME/conf dan simpan salinan file properti aslinya.

cd $PIG_HOME/conf
sudo cp pig.properties pig.properties.original

Terminal melakukan pencadangan file pig.properties sebelum konfigurasi Pig diedit.

Buka file pig.properties menggunakan editor teks pilihan Anda, dan tentukan jalur file log menggunakan pig.logfile.

sudo gedit pig.properties

Buka file konfigurasi pig.properties di editor teks pada pengaturan file log.

Program pencatat log akan menggunakan file ini untuk mencatat kesalahan.

Langkah 4) Jalankan perintah 'pig', yang akan memulai prompt perintah Pig, sebuah shell interaktif untuk kueri Pig.

pig

Shell interaktif Grunt akan dimulai setelah perintah pig dijalankan.

Langkah 5) Di jendela command prompt Grunt untuk Pig, jalankan perintah Pig di bawah ini secara berurutan.

โ€” A. Memuat file yang berisi data.

salesTable = LOAD '/SalesJan2009.csv' USING PigStorage(',') AS (Transaction_date:chararray,Product:chararray,Price:chararray,Payment_Type:chararray,Name:chararray,City:chararray,State:chararray,Country:chararray,Account_Created:chararray,Last_Login:chararray,Latitude:chararray,Longitude:chararray);

Tekan Enter setelah perintah ini.

Shell Grunt menerima pernyataan LOAD yang membaca CSV penjualan ke dalam sebuah relasi.

โ€” B. Kelompokkan data berdasarkan kolom Negara.

GroupByCountry = GROUP salesTable BY Country;

Grunt shell menerima pernyataan GRUP yang mengelompokkan hubungan penjualan berdasarkan negara.

โ€” C. Untuk setiap tuple dalam 'GroupByCountry', hasilkan string dengan format Nama Negara: Jumlah produk terjual.

CountByCountry = FOREACH GroupByCountry GENERATE CONCAT((chararray)$0,CONCAT(':',(chararray)COUNT($1)));

Tekan Enter setelah perintah ini.

Shell Grunt menerima pernyataan FOREACH GENERATE yang membangun string negara dan jumlah.

โ€” D. Simpan hasil aliran data di direktori 'pig_output_sales' di HDFS.

STORE CountByCountry INTO 'pig_output_sales' USING PigStorage('\t');

Shell Grunt menerima pernyataan STORE yang menulis output ke direktori pig_output_sales.

Perintah ini akan membutuhkan waktu untuk dieksekusi. Setelah selesai, Anda akan melihat layar berikut.

Layar konsol yang ditampilkan setelah perintah STORE selesai dieksekusi.

Langkah 6) Hasilnya dapat dilihat melalui antarmuka perintah sebagai berikut:

$HADOOP_HOME/bin/hdfs dfs -cat pig_output_sales/part-r-00000

Output baris perintah dari file hasil yang mencantumkan produk yang terjual per negara.

Hasilnya juga dapat dilihat melalui antarmuka web.

Buka http://localhost:50070/ di peramban web.

Port 50070 adalah UI web NameNode pada Hadoop 2. Hadoop 3 memindahkan halaman yang sama ke port 9870, jadi gunakan alamat tersebut jika klaster Anda menjalankan Hadoop 3.

Antarmuka web Hadoop NameNode digunakan untuk menjelajahi sistem file HDFS.

Sekarang pilih 'Jelajahi sistem file' dan navigasikan ke atas ke /user/hduser/pig_output_sales.

Browser HDFS yang menampilkan direktori pig_output_sales di bawah jalur home hduser.

Buka part-r-00000 untuk membaca pasangan negara dan jumlah produk yang dihasilkan oleh skrip.

Tampilan browser dari file output part-r-00000 dengan pasangan negara dan jumlah produk.

Apache Pig vs Hive vs MapReduce

Pig jarang dievaluasi secara terpisah. Pertanyaan yang biasa diajukan adalah apakah suatu pekerjaan termasuk dalam kategori Pig, atau dalam kategori lainnya. Sarang lebah atau dalam program MapReduce yang ditulis tangan, karena ketiganya pada akhirnya menjadi pekerjaan pada klaster yang sama.

Aspek MapReduce (Java) Babi Apache Sarang Apache
Antarmuka Java API Pig Latin, sebuah bahasa skrip aliran data. sarang QL, sebuah dialek SQL
Tingkat abstracproduksi Rendah Medium High
Pengguna umum Java pembangun Insinyur data atau peneliti Analis yang mahir dalam SQL
Data yang sesuai Segala sesuatu, ditangani secara manual Terstruktur dan semi-terstruktur; skema bersifat opsional pada saat pemuatan. Tabel terstruktur yang terdaftar di metastore
Code volume Sebagian besar baris Antrean lebih sedikit Jumlah baris paling sedikit untuk sebuah kueri.
Berjalan sebagai Sebuah pekerjaan MapReduce Dikompilasi ke MapReduce, Tez atau Spark pekerjaan Dikompilasi ke MapReduce, Tez atau Spark pekerjaan
Terbaik di Kontrol penuh dan logika kustom. Pipeline ETL multi-langkah Pengumpulan dan pelaporan ad hoc

Dalam praktiknya, pemisahannya cukup mudah. โ€‹โ€‹Gunakan Hive ketika data sudah berbentuk tabel dan pertanyaannya berbentuk SQL. Gunakan Pig ketika inputnya berantakan, ketika pipeline merupakan rangkaian transformasi dan bukan kueri tunggal, atau ketika skrip yang sama harus bercabang dan bergabung kembali. Gunakan MapReduce hanya ketika tidak ada solusi yang mutlak diperlukan.traction dapat mengekspresikan logika, karena jumlah baris bertambah dengan cepat.

Babi juga dapat hidup berdampingan dengan nyaman dengan ekosistem lainnya. Sqoop dan Flume Masukkan data mentah, olah data tersebut menggunakan Pig atau Hive, dan gunakan penjadwal seperti... Apache Oozie merangkai langkah-langkah menjadi alur kerja yang dapat diulang. Untuk gambaran yang lebih luas tentang di mana alat-alat ini cocok, lihat panduan untuk data besar dan rangkuman dari alat data besarUntuk alternatif ETL komersial selain skrip yang ditulis tangan, lihat Talend.

Pertanyaan Umum Demo Slot

Ya. Apache Pig 0.18.0 dirilis pada 15 September 2025 dan menghadirkan dukungan untuk Hadoop 3, Tez 0.10, Hive 3, Spark 3, HBase 2 dan Python 3. Perkembangannya lebih lambat dibandingkan saat masih bernama Yahoo!, tetapi proyek ini tidak dihentikan.

Asisten AI menyusun logika transformasi dari deskripsi sederhana, menyarankan kunci penggabungan, menandai penyimpangan skema antar proses, dan meringkas log klaster menjadi penyebab yang mungkin. Anggap output tersebut sebagai draf pertama yang masih perlu diprofilkan terhadap data nyata.

Copilot menghasilkan Pig Latin yang masuk akal dengan cepat karena sintaksnya terwakili dengan baik di repositori publik. Namun, program ini memang mengarang nama fungsi dan posisi field yang tidak sesuai, jadi jalankan DESCRIBE dan ILLUSTRATE pada contoh sebelum mempercayai skrip yang dihasilkan.

Pig hanya dieksekusi ketika sebuah pernyataan memaksa materialisasi. Rangkaian pernyataan LOAD dan FOREACH divalidasi tetapi tidak pernah dijalankan sampai diikuti oleh DUMP atau STORE, sehingga skrip yang berakhir setelah transformasi selesai secara diam-diam.

Perintah DUMP mencetak relasi ke terminal dan ditujukan untuk pengujian. Perintah STORE menulis relasi ke sistem file melalui fungsi penyimpanan seperti PigStorage. Skrip produksi harus selalu diakhiri dengan STORE.

Tidak. Klausa AS bersifat opsional. Tanpa itu, setiap field dimuat sebagai bytearray dan dirujuk berdasarkan posisinya, seperti $0 dan $1. Mendeklarasikan skema hanya membuat skrip lebih mudah dibaca dan memungkinkan Pig melakukan pengecekan tipe lebih awal.

Sebagian besar jalur pipa baru dimulai pada Spark, yang memiliki komunitas lebih besar dan pustaka yang lebih kaya. Pig tetap masuk akal di mana skrip sudah ada, di mana tim lebih menyukai sintaks aliran data, atau di mana Pig berjalan di Spark melalui exectype spark.

Sqoop mengimpor tabel relasional dan Flume mengalirkan data log ke HDFS. Pig kemudian mentransformasi data yang telah masuk. Oozie menggabungkan langkah impor, transformasi, dan ekspor menjadi satu alur kerja terjadwal sehingga pipeline berulang tanpa perlu dijalankan secara manual.

Ringkaslah postingan ini dengan: