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ồmexpressions và schemas.
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. |