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 เพื่อคำนวณความสัมพันธ์
ภาพลวงตา เพื่อดูการดำเนินการทีละขั้นตอนของชุดคำสั่ง