Pig Latin - พื้นฐาน
Pig Latin เป็นภาษาที่ใช้ในการวิเคราะห์ข้อมูลใน Hadoop โดยใช้ Apache Pig ในบทนี้เราจะพูดถึงพื้นฐานของ Pig Latin เช่นคำสั่ง Pig Latin ประเภทข้อมูลตัวดำเนินการทั่วไปและเชิงสัมพันธ์และ Pig Latin UDF
Pig Latin - แบบจำลองข้อมูล
ตามที่กล่าวไว้ในบทก่อนหน้าโมเดลข้อมูลของ Pig จะซ้อนกันอย่างสมบูรณ์ กRelationเป็นโครงสร้างด้านนอกสุดของโมเดลข้อมูล Pig Latin และก็คือbag ที่ไหน -
- กระเป๋าเป็นของสะสมของสิ่งทอ
- ทูเปิลคือชุดฟิลด์ที่เรียงลำดับ
- เขตข้อมูลคือส่วนหนึ่งของข้อมูล
Pig Latin - Statemets
ขณะประมวลผลข้อมูลโดยใช้ Pig Latin statements เป็นโครงสร้างพื้นฐาน
ข้อความเหล่านี้ใช้ได้กับ relations. รวมถึงexpressions และ schemas.
ทุกคำสั่งลงท้ายด้วยอัฒภาค (;)
เราจะดำเนินการต่างๆโดยใช้ตัวดำเนินการที่จัดทำโดย Pig Latin ผ่านแถลงการณ์
ยกเว้น LOAD และ STORE ในขณะที่ดำเนินการอื่น ๆ คำสั่ง Pig Latin จะใช้ความสัมพันธ์เป็นอินพุตและสร้างความสัมพันธ์อื่นเป็นเอาต์พุต
ทันทีที่คุณป้อนไฟล์ Loadคำสั่งในเชลล์ Grunt การตรวจสอบความหมายจะดำเนินการ หากต้องการดูเนื้อหาของสคีมาคุณต้องใช้ไฟล์Dumpตัวดำเนินการ หลังจากดำเนินการdump การดำเนินการงาน MapReduce สำหรับการโหลดข้อมูลลงในระบบไฟล์จะดำเนินการ
ตัวอย่าง
ด้านล่างเป็นคำสั่ง Pig Latin ซึ่งจะโหลดข้อมูลไปยัง Apache Pig
grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as
( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );
Pig Latin - ประเภทข้อมูล
ตารางด้านล่างอธิบายประเภทข้อมูล Pig Latin
SN | ประเภทข้อมูล | คำอธิบายและตัวอย่าง |
---|---|---|
1 | int | แทนจำนวนเต็ม 32 บิตที่ลงนาม Example : 8 |
2 | ยาว | แทนจำนวนเต็ม 64 บิตที่ลงนาม Example : 5 ล |
3 | ลอย | แสดงจุดลอยตัว 32 บิตที่ลงนาม Example : 5.5F |
4 | สองเท่า | แสดงถึงทศนิยม 64 บิต Example : 10.5 |
5 | chararray | แสดงอาร์เรย์อักขระ (สตริง) ในรูปแบบ Unicode UTF-8 Example : 'บทเรียนชี้' |
6 | Bytearray | แสดงอาร์เรย์ไบต์ (หยด) |
7 | บูลีน | แสดงค่าบูลีน Example : ถูกผิด. |
8 | วันเวลา | แสดงวันที่ - เวลา Example : 1970-01-01T00: 00: 00.000 + 00: 00 น |
9 | Biginteger | แสดง Java BigInteger Example : 60708090709 |
10 | ทศนิยมใหญ่ | แสดง Java BigDecimal Example : 185.98376256272893883 |
ประเภทที่ซับซ้อน | ||
11 | ทูเพิล | ทูเปิลคือชุดฟิลด์ที่เรียงลำดับ Example : (ราชา, 30) |
12 | ถุง | กระเป๋าเป็นของสะสมของสิ่งทอ Example : {(raju, 30), (โมฮัมหมัด, 45)} |
13 | แผนที่ | แผนที่คือชุดของคู่คีย์ - ค่า Example : ['name' # 'Raju', 'age' # 30] |
ค่าว่าง
ค่าสำหรับประเภทข้อมูลทั้งหมดข้างต้นสามารถเป็น NULL Apache Pig ปฏิบัติต่อค่า null ในลักษณะเดียวกับ SQL
ค่าว่างอาจเป็นค่าที่ไม่รู้จักหรือค่าที่ไม่มีอยู่จริง ใช้เป็นตัวยึดสำหรับค่าทางเลือก ค่าว่างเหล่านี้สามารถเกิดขึ้นได้ตามธรรมชาติหรืออาจเป็นผลมาจากการดำเนินการ
Pig Latin - ตัวดำเนินการเลขคณิต
ตารางต่อไปนี้อธิบายตัวดำเนินการทางคณิตศาสตร์ของ Pig Latin สมมติว่า a = 10 และ b = 20
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ | Addition - เพิ่มค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ |
a + b จะให้ 30 |
- | Subtraction - ลบตัวถูกดำเนินการทางขวามือออกจากตัวถูกดำเนินการด้านซ้าย |
a - b จะให้ −10 |
* | Multiplication - คูณค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ |
a * b จะให้ 200 |
/ | Division - แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือ |
b / a จะให้ 2 |
% | Modulus - แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือและส่งคืนส่วนที่เหลือ |
b% a จะให้ 0 |
เหรอ? : | Bincond- ประเมินตัวดำเนินการบูลีน มีสามตัวถูกดำเนินการดังที่แสดงด้านล่าง ตัวแปร x = (นิพจน์)? value1 ถ้าเป็นจริง :value2 ถ้าเป็นเท็จ |
b = (a == 1)? 20: 30; ถ้า a = 1 ค่าของ b คือ 20 ถ้า a! = 1 ค่าของ b คือ 30 |
กรณี เมื่อไหร่ แล้ว สิ้นสุดอีกครั้ง |
Case - ตัวดำเนินการเคสเทียบเท่ากับตัวดำเนินการ bincond ที่ซ้อนกัน |
กรณี f2% 2 เมื่อ 0 แล้ว 'แม้' เมื่อ 1 แล้ว 'คี่' สิ้นสุด |
Pig Latin - ตัวดำเนินการเปรียบเทียบ
ตารางต่อไปนี้อธิบายตัวดำเนินการเปรียบเทียบของ Pig Latin
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
== | Equal- ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง |
(a = b) ไม่เป็นความจริง |
! = | Not Equal- ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ ถ้าค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง |
(a! = b) เป็นจริง |
> | Greater than- ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขนั้นจะกลายเป็นจริง |
(a> b) ไม่เป็นความจริง |
< | Less than- ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขนั้นจะกลายเป็นจริง |
(a <b) เป็นจริง |
> = | Greater than or equal to- ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขนั้นจะกลายเป็นจริง |
(a> = b) ไม่เป็นความจริง |
<= | Less than or equal to- ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขนั้นจะกลายเป็นจริง |
(a <= b) เป็นจริง |
การแข่งขัน | Pattern matching - ตรวจสอบว่าสตริงทางด้านซ้ายมือตรงกับค่าคงที่ทางด้านขวามือหรือไม่ |
f1 ตรงกับ '. * กวดวิชา. *' |
Pig Latin - ประเภทช่างก่อสร้าง
ตารางต่อไปนี้อธิบายตัวดำเนินการก่อสร้าง Type ของ Pig Latin
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
() | Tuple constructor operator - ตัวดำเนินการนี้ใช้เพื่อสร้างทูเพิล |
(ราจู 30) |
{} | Bag constructor operator - ตัวดำเนินการนี้ใช้ในการสร้างกระเป๋า |
{(ราจู 30), (โมฮัมหมัด, 45)} |
[] | Map constructor operator - ตัวดำเนินการนี้ใช้เพื่อสร้างทูเพิล |
[ชื่อ # ราชาอายุ # 30] |
Pig Latin - การดำเนินการเชิงสัมพันธ์
ตารางต่อไปนี้อธิบายตัวดำเนินการเชิงสัมพันธ์ของ Pig Latin
ตัวดำเนินการ | คำอธิบาย |
---|---|
Loading and Storing | |
โหลด | ในการโหลดข้อมูลจากระบบไฟล์ (โลคัล / HDFS) ลงในรีเลชัน |
เก็บ | เพื่อบันทึกความสัมพันธ์กับระบบไฟล์ (local / HDFS) |
การกรอง | |
กรอง | เพื่อลบแถวที่ไม่ต้องการออกจากความสัมพันธ์ |
แตกต่าง | เพื่อลบแถวที่ซ้ำกันออกจากความสัมพันธ์ |
FOREACH สร้าง | เพื่อสร้างการแปลงข้อมูลตามคอลัมน์ของข้อมูล |
กระแส | เพื่อแปลงความสัมพันธ์โดยใช้โปรแกรมภายนอก |
การจัดกลุ่มและการเข้าร่วม | |
เข้าร่วม | เพื่อเข้าร่วมความสัมพันธ์ตั้งแต่สองคนขึ้นไป |
COGROUP | เพื่อจัดกลุ่มข้อมูลในสองความสัมพันธ์ขึ้นไป |
กลุ่ม | เพื่อจัดกลุ่มข้อมูลในความสัมพันธ์เดียว |
ข้าม | เพื่อสร้างผลคูณไขว้ของความสัมพันธ์ตั้งแต่สองตัวขึ้นไป |
การเรียงลำดับ | |
ใบสั่ง | ในการจัดเรียงความสัมพันธ์ตามลำดับที่เรียงตามฟิลด์อย่างน้อยหนึ่งฟิลด์ (จากน้อยไปมากหรือมากไปหาน้อย) |
LIMIT | เพื่อรับจำนวนสิ่งที่ จำกัด จากความสัมพันธ์ |
การรวมและการแยก | |
ยูเนี่ยน | เพื่อรวมความสัมพันธ์ตั้งแต่สองความสัมพันธ์ขึ้นไปเป็นความสัมพันธ์เดียว |
แยก | เพื่อแบ่งความสัมพันธ์เดียวออกเป็นสองความสัมพันธ์หรือมากกว่า |
ตัวดำเนินการวินิจฉัย | |
DUMP | เพื่อพิมพ์เนื้อหาของความสัมพันธ์บนคอนโซล |
อธิบาย | เพื่ออธิบายสคีมาของความสัมพันธ์ |
อธิบาย | เพื่อดูแผนการดำเนินการเชิงตรรกะทางกายภาพหรือ MapReduce เพื่อคำนวณความสัมพันธ์ |
ภาพลวงตา | เพื่อดูการดำเนินการทีละขั้นตอนของชุดคำสั่ง |