Pig Latin - Khái niệm cơ bản

Pig Latin là ngôn ngữ được sử dụng để phân tích dữ liệu trong Hadoop bằng Apache Pig. Trong chương này, chúng ta sẽ thảo luận về những điều cơ bản của Pig Latin như câu lệnh Pig Latin, kiểu dữ liệu, toán tử quan hệ và tổng quát, và Pig Latin UDF.

Pig Latin - Mô hình dữ liệu

Như đã thảo luận trong các chương trước, mô hình dữ liệu của Pig được lồng hoàn toàn. ARelationlà cấu trúc ngoài cùng của mô hình dữ liệu Pig Latin. Và nó là mộtbag ở đâu -

  • Một chiếc túi là một bộ sưu tập các bộ sưu tập.
  • Một bộ giá trị là một tập hợp các trường có thứ tự.
  • Trường là một phần dữ liệu.

Pig Latin - Statemets

Trong khi xử lý dữ liệu bằng Pig Latin, statements là những cấu trúc cơ bản.

  • Những câu lệnh này hoạt động với relations. Chúng bao gồmexpressionsschemas.

  • Mọi câu lệnh đều kết thúc bằng dấu chấm phẩy (;).

  • Chúng tôi sẽ thực hiện các hoạt động khác nhau bằng cách sử dụng các toán tử do Pig Latin cung cấp, thông qua các câu lệnh.

  • Ngoại trừ LOAD và STORE, trong khi thực hiện tất cả các hoạt động khác, các câu lệnh Pig Latin lấy một quan hệ làm đầu vào và tạo ra một quan hệ khác làm đầu ra.

  • Ngay sau khi bạn nhập một Loadtrong Grunt shell, việc kiểm tra ngữ nghĩa của nó sẽ được thực hiện. Để xem nội dung của lược đồ, bạn cần sử dụngDumpnhà điều hành. Chỉ sau khi thực hiệndump hoạt động, công việc MapReduce để tải dữ liệu vào hệ thống tệp sẽ được thực hiện.

Thí dụ

Dưới đây là câu lệnh Pig Latin tải dữ liệu vào Apache Pig.

grunt> Student_data = LOAD 'student_data.txt' USING PigStorage(',')as 
   ( id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray );

Pig Latin - Kiểu dữ liệu

Bảng dưới đây mô tả các kiểu dữ liệu Pig Latin.

SN Loại dữ liệu Mô tả & Ví dụ
1 int

Đại diện cho một số nguyên 32 bit có dấu.

Example : số 8

2 Dài

Đại diện cho một số nguyên 64 bit có dấu.

Example : 5L

3 Phao nổi

Đại diện cho một dấu chấm động 32 bit có dấu.

Example : 5,5F

4 gấp đôi

Đại diện cho một dấu chấm động 64 bit.

Example : 10,5

5 chararray

Đại diện cho một mảng ký tự (chuỗi) ở định dạng Unicode UTF-8.

Example : 'điểm hướng dẫn'

6 Bytearray

Đại diện cho một mảng Byte (blob).

7 Boolean

Đại diện cho một giá trị Boolean.

Example : đúng sai.

số 8 Ngày giờ

Đại diện cho một ngày-giờ.

Example : 1970-01-01T00: 00: 00.000 + 00: 00

9 Biginteger

Đại diện cho một BigInteger Java.

Example : 60708090709

10 Bigdecimal

Đại diện cho một BigDecimal của Java

Example : 185,98376256272893883

Loại phức tạp
11 Tuple

Một bộ giá trị là một tập hợp các trường có thứ tự.

Example : (raja, 30 tuổi)

12 Túi

Một chiếc túi là một bộ sưu tập các bộ sưu tập.

Example : {(raju, 30), (Mohhammad, 45)}

13 Bản đồ

Bản đồ là một tập hợp các cặp khóa-giá trị.

Example : ['name' # 'Raju', 'age' # 30]

Giá trị rỗng

Giá trị cho tất cả các kiểu dữ liệu trên có thể là NULL. Apache Pig xử lý các giá trị rỗng theo cách tương tự như SQL.

Giá trị null có thể là một giá trị không xác định hoặc một giá trị không tồn tại. Nó được sử dụng như một trình giữ chỗ cho các giá trị tùy chọn. Các giá trị null này có thể xảy ra tự nhiên hoặc có thể là kết quả của một hoạt động.

Pig Latin - Toán tử số học

Bảng sau đây mô tả các toán tử số học của Pig Latin. Giả sử a = 10 và b = 20.

Nhà điều hành Sự miêu tả Thí dụ
+

Addition - Thêm các giá trị ở hai bên của toán tử

a + b sẽ cho 30
-

Subtraction - Trừ toán hạng bên phải khỏi toán hạng bên trái

a - b sẽ cho -10
*

Multiplication - Nhân các giá trị ở hai bên của toán tử

a * b sẽ cho 200
/

Division - Chia toán hạng bên trái cho toán hạng bên phải

b / a sẽ cho 2
%

Modulus - Chia toán hạng bên trái cho toán hạng bên phải và trả về phần còn lại

b% a sẽ cho 0
? :

Bincond- Đánh giá các toán tử Boolean. Nó có ba toán hạng như hình dưới đây.

Biến đổi x = (biểu thức)? value1 nếu đúng :value2 nếu sai .

b = (a == 1)? 20: 30;

nếu a = 1 giá trị của b là 20.

nếu a! = 1 giá trị của b là 30.

TRƯỜNG HỢP

KHI NÀO

SAU ĐÓ

ELSE KẾT THÚC

Case - Toán tử case tương đương với toán tử bincond lồng nhau.

TRƯỜNG HỢP f2% 2

KHI 0 THÌ 'chẵn'

KHI 1 THÌ 'lẻ'

KẾT THÚC

Pig Latin - Toán tử so sánh

Bảng sau đây mô tả các toán tử so sánh của Pig Latin.

Nhà điều hành Sự miêu tả Thí dụ
==

Equal- Kiểm tra giá trị của hai toán hạng có bằng nhau hay không; nếu có, thì điều kiện trở thành true.

(a = b) không đúng
! =

Not Equal- Kiểm tra giá trị của hai toán hạng có bằng nhau hay không. Nếu các giá trị không bằng nhau, thì điều kiện trở thành true.

(a! = b) là đúng.
>

Greater than- Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải hay không. Nếu có, thì điều kiện trở thành true.

(a> b) không đúng.
<

Less than- Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn giá trị của toán hạng bên phải hay không. Nếu có, thì điều kiện trở thành true.

(a <b) là đúng.
> =

Greater than or equal to- Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu có, thì điều kiện trở thành true.

(a> = b) không đúng.
<=

Less than or equal to- Kiểm tra giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải. Nếu có, thì điều kiện trở thành true.

(a <= b) là đúng.
diêm

Pattern matching - Kiểm tra xem chuỗi ở bên trái có khớp với hằng số ở bên phải hay không.

f1 khớp với '. * hướng dẫn. *'

Pig Latin - Nhà điều hành xây dựng kiểu

Bảng sau đây mô tả các toán tử xây dựng Kiểu của Pig Latin.

Nhà điều hành Sự miêu tả Thí dụ
()

Tuple constructor operator - Toán tử này được sử dụng để xây dựng một bộ giá trị.

(Raju, 30 tuổi)
{}

Bag constructor operator - Toán tử này được sử dụng để tạo túi.

{(Raju, 30 tuổi), (Mohammad, 45 tuổi)}
[]

Map constructor operator - Toán tử này được sử dụng để xây dựng một bộ giá trị.

[tên # Raja, # 30 tuổi]

Pig Latin - Phép toán quan hệ

Bảng sau đây mô tả các toán tử quan hệ của Pig Latin.

Nhà điều hành Sự miêu tả
Loading and Storing
TẢI Để tải dữ liệu từ hệ thống tệp (cục bộ / HDFS) vào một mối quan hệ.
CỬA HÀNG Để lưu một mối quan hệ với hệ thống tệp (cục bộ / HDFS).
Lọc
BỘ LỌC Để loại bỏ các hàng không mong muốn khỏi một quan hệ.
DISTINCT Để loại bỏ các hàng trùng lặp khỏi một mối quan hệ.
FOREACH, GENERATE Để tạo các phép biến đổi dữ liệu dựa trên các cột dữ liệu.
SUỐI Để chuyển đổi một quan hệ bằng cách sử dụng một chương trình bên ngoài.
Nhóm và tham gia
THAM GIA Để tham gia hai hoặc nhiều quan hệ.
COGROUP Để nhóm dữ liệu trong hai hoặc nhiều quan hệ.
NHÓM Để nhóm dữ liệu trong một mối quan hệ duy nhất.
VƯỢT QUA Để tạo ra sản phẩm chéo của hai hoặc nhiều quan hệ.
Sắp xếp
ĐẶT HÀNG Để sắp xếp một quan hệ theo thứ tự đã sắp xếp dựa trên một hoặc nhiều trường (tăng dần hoặc giảm dần).
GIỚI HẠN Để nhận một số bộ giá trị giới hạn từ một mối quan hệ.
Kết hợp và tách
LIÊN HIỆP Để kết hợp hai hoặc nhiều quan hệ thành một quan hệ duy nhất.
TÁCH Để tách một quan hệ thành hai hoặc nhiều quan hệ.
Người điều hành chẩn đoán
DUMP Để in nội dung của một quan hệ trên bảng điều khiển.
DIỄN TẢ Để mô tả lược đồ của một quan hệ.
GIẢI THÍCH Để xem các kế hoạch thực thi logic, vật lý hoặc MapReduce để tính toán một mối quan hệ.
MINH HỌA Để xem việc thực thi từng bước của một loạt các câu lệnh.