บทช่วยสอน Hadoop Pig: Apache Pig คืออะไร Archiการสอน, ตัวอย่าง
เราจะเริ่มต้นด้วยการแนะนำหมู
อาปาเช่หมูคืออะไร?
Pig เป็นภาษาโปรแกรมระดับสูงที่มีประโยชน์สำหรับการวิเคราะห์ชุดข้อมูลขนาดใหญ่ Pig เป็นผลมาจากความพยายามในการพัฒนาที่ Yahoo!
ในกรอบงาน MapReduce โปรแกรมจำเป็นต้องแปลเป็นชุดของขั้นตอน Map และ ลด อย่างไรก็ตาม นี่ไม่ใช่โมเดลการเขียนโปรแกรมที่นักวิเคราะห์ข้อมูลคุ้นเคย ดังนั้น เพื่อลดช่องว่างนี้ นามธรรมที่เรียกว่า Pig จึงถูกสร้างขึ้นบน Hadoop
Apache Pig ช่วยให้ผู้คนมีสมาธิมากขึ้น วิเคราะห์ชุดข้อมูลจำนวนมากและใช้เวลาน้อยลงในการเขียนโปรแกรม Map-Reduce คล้ายกับหมูที่กินอะไรก็ได้ หมูอาปาเช่ ภาษาโปรแกรม ได้รับการออกแบบมาเพื่อทำงานกับข้อมูลทุกประเภท นั่นเป็นเหตุผลว่าทำไมชื่อหมู!
ในบทช่วยสอน Apache Pig สำหรับผู้เริ่มต้นนี้ คุณจะได้เรียนรู้-
หมู Archiเทคเจอร์
เหตุการณ์ Archiโครงสร้างหมูประกอบด้วยสององค์ประกอบ:
-
หมูละติน ซึ่งเป็นภาษา
-
สภาพแวดล้อมรันไทม์ สำหรับการรันโปรแกรม PigLatin
โปรแกรม Pig Latin ประกอบด้วยชุดการดำเนินการหรือการแปลงที่นำไปใช้กับข้อมูลอินพุตเพื่อสร้างผลลัพธ์ การดำเนินการเหล่านี้อธิบายการไหลของข้อมูลซึ่งถูกแปลเป็นการแสดงที่สามารถทำงานได้โดยสภาพแวดล้อมการดำเนินการของ Hadoop Pig ผลลัพธ์ของการแปลงเหล่านี้คือชุดงาน MapReduce ที่โปรแกรมเมอร์ไม่ทราบ ดังนั้น ในทางหนึ่ง Pig ใน Hadoop ช่วยให้โปรแกรมเมอร์สามารถมุ่งเน้นไปที่ข้อมูลมากกว่าลักษณะของการดำเนินการ
PigLatin เป็นภาษาที่ค่อนข้างแข็งซึ่งใช้คำสำคัญที่คุ้นเคยจากการประมวลผลข้อมูล เช่น เข้าร่วม จัดกลุ่ม และกรอง
โหมดการดำเนินการ:
Pig ใน Hadoop มีโหมดการดำเนินการสองโหมด:
-
โหมดท้องถิ่น: ในโหมดนี้ ภาษา Hadoop Pig จะทำงานในภาษาเดียว JVM และใช้ประโยชน์จากระบบไฟล์ในเครื่อง โหมดนี้เหมาะสำหรับการวิเคราะห์ชุดข้อมูลขนาดเล็กโดยใช้ Pig ใน Hadoop เท่านั้น
-
โหมดลดขนาดแผนที่: ในโหมดนี้ ข้อความค้นหาที่เขียนเป็นภาษา Pig Latin จะถูกแปลเป็น แผนที่ลด งานและทำงานบนคลัสเตอร์ Hadoop (คลัสเตอร์อาจเป็นแบบหลอกหรือแบบกระจายเต็มรูปแบบ) โหมด MapReduce ที่มีคลัสเตอร์แบบกระจายเต็มรูปแบบนั้นมีประโยชน์ในการเรียกใช้ Pig บนชุดข้อมูลขนาดใหญ่
วิธีดาวน์โหลดและติดตั้ง Pig
ในบทช่วยสอน Apache Pig นี้ เราจะได้เรียนรู้วิธีดาวน์โหลดและติดตั้ง Pig:
ก่อนที่เราจะเริ่มกระบวนการจริง ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Hadoop แล้ว เปลี่ยนผู้ใช้เป็น 'hduser' (รหัสที่ใช้ขณะกำหนดค่า Hadoop คุณสามารถสลับเป็นรหัสผู้ใช้ที่ใช้ในระหว่างการกำหนดค่า Hadoop ของคุณ)
ขั้นตอน 1) ดาวน์โหลด Pig Hadoop รุ่นล่าสุดที่เสถียรจากไซต์มิเรอร์แห่งใดแห่งหนึ่งที่มีให้ที่
http://pig.apache.org/releases.html
เลือก tar.gz (และไม่ src.tar.gz) ไฟล์ที่จะดาวน์โหลด
ขั้นตอน 2) เมื่อการดาวน์โหลดเสร็จสิ้น ให้ไปที่ไดเร็กทอรีที่มีไฟล์ tar ที่ดาวน์โหลดมา และย้าย tar ไปยังตำแหน่งที่คุณต้องการติดตั้ง Pig Hadoop ในกรณีนี้ เราจะย้ายไปที่ /usr/local
ย้ายไปยังไดเร็กทอรีที่มีไฟล์ Pig Hadoop
cd /usr/local
แยกเนื้อหาของไฟล์ tar ดังต่อไปนี้
sudo tar -xvf pig-0.12.1.tar.gz
ขั้นตอนที่ 3). แก้ไข ~ / .bashrc เพื่อเพิ่มตัวแปรสภาพแวดล้อมที่เกี่ยวข้องกับ Pig
จุดเปิด ~ / .bashrc ไฟล์ในโปรแกรมแก้ไขข้อความที่คุณเลือกและทำการแก้ไขด้านล่าง -
export PIG_HOME=<Installation directory of Pig> export PATH=$PIG_HOME/bin:$HADOOP_HOME/bin:$PATH
ขั้นตอน 4) ตอนนี้ให้กำหนดค่าสภาพแวดล้อมนี้โดยใช้คำสั่งด้านล่าง
. ~/.bashrc
ขั้นตอน 5) เราจำเป็นต้องคอมไพล์ใหม่ หมู ที่ให้การสนับสนุน ฮาดูป 2.2.0
นี่คือขั้นตอนในการทำเช่นนี้-
ไปที่โฮมไดเร็กตอรี่ของ PIG
cd $PIG_HOME
ติดตั้ง Ant
sudo apt-get install ant
หมายเหตุ: การดาวน์โหลดจะเริ่มขึ้นและจะใช้เวลาตามความเร็วอินเทอร์เน็ตของคุณ
คอมไพล์ PIG อีกครั้ง
sudo ant clean jar-all -Dhadoopversion=23
โปรดทราบว่าในกระบวนการคอมไพล์ใหม่นี้ มีการดาวน์โหลดส่วนประกอบหลายรายการ ดังนั้นระบบควรเชื่อมต่อกับอินเทอร์เน็ต
นอกจากนี้ ในกรณีที่กระบวนการนี้ค้างอยู่ที่ใดที่หนึ่งและคุณไม่เห็นความเคลื่อนไหวใด ๆ ใน command prompt เป็นเวลานานกว่า 20 นาที ให้กด ctrl + c และรันคำสั่งเดิมอีกครั้ง
ในกรณีของเรา ใช้เวลา 20 นาที
ขั้นตอน 6) ทดสอบไฟล์ หมู การติดตั้งโดยใช้คำสั่ง
pig -help
ตัวอย่างสคริปต์หมู
เราจะใช้ Pig Scripts เพื่อค้นหาจำนวนผลิตภัณฑ์ที่ขายในแต่ละประเทศ
Input: ชุดข้อมูลอินพุตของเราเป็นไฟล์ CSV ยอดขายมกราคม 2009.csv
ขั้นตอน 1) เริ่ม Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
ขั้นตอน 2) Pig ใน Big Data นำไฟล์มาจาก เอชดีเอฟเอส ในโหมด MapReduce และจัดเก็บผลลัพธ์กลับไปยัง HDFS
คัดลอกไฟล์ ยอดขายมกราคม 2009.csv (เก็บไว้ในระบบไฟล์ในเครื่อง ~/input/SalesJan2009.csv) ไปยังโฮมไดเร็กทอรี HDFS (Hadoop Distributed File System)
ในตัวอย่าง Apache Pig นี้ ไฟล์อยู่ในโฟลเดอร์อินพุต หากไฟล์ถูกจัดเก็บไว้ในตำแหน่งอื่น ให้ระบุชื่อนั้น
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/input/SalesJan2009.csv /
ตรวจสอบว่าไฟล์ถูกคัดลอกจริงหรือไม่
$HADOOP_HOME/bin/hdfs dfs -ls /
ขั้นตอน 3) การกำหนดค่าหมู
ขั้นแรก ไปที่ $PIG_HOME/conf
cd $PIG_HOME/conf
sudo cp pig.properties pig.properties.original
จุดเปิด หมูคุณสมบัติ ใช้โปรแกรมแก้ไขข้อความที่คุณเลือก และระบุเส้นทางไฟล์บันทึกโดยใช้ pig.logfile
sudo gedit pig.properties
Loger จะใช้ไฟล์นี้เพื่อบันทึกข้อผิดพลาด
ขั้นตอน 4) เรียกใช้คำสั่ง 'pig' ซึ่งจะเริ่มพรอมต์คำสั่ง Pig ซึ่งเป็นคำสั่งเชลล์ Pig แบบโต้ตอบ
pig
ขั้นตอน 5)ในพรอมต์คำสั่ง Grunt สำหรับ Pig ให้ดำเนินการด้านล่างคำสั่ง Pig ตามลำดับ
— A. โหลดไฟล์ที่มีข้อมูล
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);
กด Enter หลังจากคำสั่งนี้
— B. จัดกลุ่มข้อมูลตามประเทศภาคสนาม
GroupByCountry = GROUP salesTable BY Country;
— C. สำหรับแต่ละทูเพิลใน 'กลุ่มตามประเทศ'สร้างสตริงผลลัพธ์ของแบบฟอร์ม -> ชื่อประเทศ: จำนวนผลิตภัณฑ์ที่ขาย
CountByCountry = FOREACH GroupByCountry GENERATE CONCAT((chararray)$0,CONCAT(':',(chararray)COUNT($1)));
กด Enter หลังจากคำสั่งนี้
— D. เก็บผลลัพธ์ของ Data Flow ไว้ในไดเร็กทอรี 'pig_output_sales' บน HDFS
STORE CountByCountry INTO 'pig_output_sales' USING PigStorage('\t');
คำสั่งนี้อาจใช้เวลาสักครู่ในการดำเนินการ เมื่อดำเนินการเสร็จแล้ว คุณจะเห็นหน้าจอต่อไปนี้
ขั้นตอน 6) ผลลัพธ์สามารถเห็นได้ผ่านส่วนต่อประสานคำสั่งเป็น
$HADOOP_HOME/bin/hdfs dfs -cat pig_output_sales/part-r-00000
สามารถดูผลลัพธ์ได้ผ่านทางเว็บอินเตอร์เฟสเช่นกัน
ผลลัพธ์ผ่านเว็บอินเตอร์เฟส-
จุดเปิด http://localhost:50070/
ในเว็บเบราว์เซอร์
ตอนนี้เลือก 'เรียกดูระบบไฟล์' และนำทางขึ้นไป /ผู้ใช้/hduser/pig_output_sales
จุดเปิด ส่วน-r-00000