Apache Pig - Tổng quan
Apache Pig là gì?
Apache Pig là một trừu tượng so với MapReduce. Nó là một công cụ / nền tảng được sử dụng để phân tích các bộ dữ liệu lớn hơn biểu thị chúng dưới dạng các luồng dữ liệu. Heo thường được sử dụng vớiHadoop; chúng ta có thể thực hiện tất cả các thao tác xử lý dữ liệu trong Hadoop bằng Apache Pig.
Để viết các chương trình phân tích dữ liệu, Pig cung cấp một ngôn ngữ cấp cao được gọi là Pig Latin. Ngôn ngữ này cung cấp các toán tử khác nhau sử dụng mà các lập trình viên có thể phát triển các chức năng của riêng họ để đọc, viết và xử lý dữ liệu.
Để phân tích dữ liệu bằng cách sử dụng Apache Pig, người lập trình cần viết script bằng ngôn ngữ Pig Latin. Tất cả các tập lệnh này được chuyển đổi nội bộ thành các tác vụ Bản đồ và Rút gọn. Apache Pig có một thành phần được gọi làPig Engine chấp nhận các tập lệnh Pig Latin làm đầu vào và chuyển đổi các tập lệnh đó thành các công việc MapReduce.
Tại sao chúng ta cần Apache Pig?
Các lập trình viên không giỏi Java thường gặp khó khăn khi làm việc với Hadoop, đặc biệt khi thực hiện bất kỳ tác vụ MapReduce nào. Apache Pig là một lợi ích cho tất cả các lập trình viên như vậy.
Sử dụng Pig Latin, lập trình viên có thể thực hiện các tác vụ MapReduce một cách dễ dàng mà không cần phải gõ các mã phức tạp trong Java.
Apache Pig sử dụng multi-query approach, do đó làm giảm độ dài của mã. Ví dụ: một hoạt động yêu cầu bạn nhập 200 dòng mã (LoC) trong Java có thể dễ dàng thực hiện bằng cách nhập ít hơn chỉ 10 LoC trong Apache Pig. Cuối cùng thì Apache Pig giảm thời gian phát triển gần 16 lần.
Pig Latin là SQL-like language và rất dễ học Apache Pig khi bạn đã quen với SQL.
Apache Pig cung cấp nhiều toán tử tích hợp sẵn để hỗ trợ các thao tác dữ liệu như nối, bộ lọc, sắp xếp thứ tự, v.v. Ngoài ra, nó cũng cung cấp các kiểu dữ liệu lồng nhau như bộ giá trị, túi và bản đồ bị thiếu trong MapReduce.
Đặc điểm của lợn
Apache Pig đi kèm với các tính năng sau:
Rich set of operators - Nó cung cấp nhiều toán tử để thực hiện các thao tác như nối, sắp xếp, lọc, v.v.
Ease of programming - Pig Latin tương tự như SQL và rất dễ viết một tập lệnh Pig nếu bạn giỏi SQL.
Optimization opportunities - Các tác vụ trong Apache Pig tự động tối ưu hóa việc thực thi của chúng, vì vậy người lập trình chỉ cần tập trung vào ngữ nghĩa của ngôn ngữ.
Extensibility - Sử dụng các toán tử hiện có, người dùng có thể phát triển các chức năng của riêng họ để đọc, xử lý và ghi dữ liệu.
UDF’s - Heo cung cấp cơ sở để tạo User-defined Functions bằng các ngôn ngữ lập trình khác như Java và gọi hoặc nhúng chúng vào Pig Scripts.
Handles all kinds of data- Apache Pig phân tích tất cả các loại dữ liệu, cả có cấu trúc cũng như không có cấu trúc. Nó lưu trữ các kết quả trong HDFS.
Apache Pig Vs MapReduce
Dưới đây là những điểm khác biệt chính giữa Apache Pig và MapReduce.
Lợn Apache | MapReduce |
---|---|
Apache Pig là một ngôn ngữ luồng dữ liệu. | MapReduce là một mô hình xử lý dữ liệu. |
Nó là một ngôn ngữ cấp cao. | MapReduce là cấp thấp và cứng nhắc. |
Thực hiện thao tác Tham gia trong Apache Pig khá đơn giản. | Khá khó khăn trong MapReduce để thực hiện thao tác Nối giữa các tập dữ liệu. |
Bất kỳ lập trình viên mới nào có kiến thức cơ bản về SQL đều có thể làm việc thuận tiện với Apache Pig. | Tiếp xúc với Java là phải làm việc với MapReduce. |
Apache Pig sử dụng phương pháp tiếp cận đa truy vấn, do đó giảm độ dài của các mã đến một mức độ lớn. | MapReduce sẽ yêu cầu số dòng nhiều hơn gần 20 lần để thực hiện cùng một nhiệm vụ. |
Không cần biên dịch. Khi thực thi, mọi toán tử Apache Pig được chuyển đổi nội bộ thành một công việc MapReduce. | Các công việc MapReduce có một quá trình biên dịch lâu dài. |
Apache Pig Vs SQL
Dưới đây là những điểm khác biệt chính giữa Apache Pig và SQL.
Con lợn | SQL |
---|---|
Pig Latin là một procedural ngôn ngữ. | SQL là một declarative ngôn ngữ. |
Trong Apache Pig, schemaLà tùy chọn. Chúng tôi có thể lưu trữ dữ liệu mà không cần thiết kế lược đồ (các giá trị được lưu trữ dưới dạng $ 01, $ 02, v.v.) | Lược đồ là bắt buộc trong SQL. |
Mô hình dữ liệu trong Apache Pig là nested relational. | Mô hình dữ liệu được sử dụng trong SQL is flat relational. |
Apache Pig cung cấp cơ hội hạn chế cho Query optimization. | Có nhiều cơ hội hơn để tối ưu hóa truy vấn trong SQL. |
Ngoài những điểm khác biệt trên, Apache Pig Latin -
- Cho phép phân chia trong đường ống.
- Cho phép các nhà phát triển lưu trữ dữ liệu ở bất kỳ đâu trong đường dẫn.
- Khai báo các kế hoạch thực hiện.
- Cung cấp các toán tử để thực hiện các chức năng ETL (Trích xuất, Biến đổi và Tải).
Apache Pig Vs Hive
Cả Apache Pig và Hive đều được sử dụng để tạo các công việc MapReduce. Và trong một số trường hợp, Hive hoạt động trên HDFS theo cách tương tự như Apache Pig. Trong bảng sau, chúng tôi đã liệt kê một vài điểm quan trọng giúp Apache Pig khác biệt với Hive.
Lợn Apache | Hive |
---|---|
Apache Pig sử dụng một ngôn ngữ gọi là Pig Latin. Ban đầu nó được tạo tạiYahoo. | Hive sử dụng một ngôn ngữ gọi là HiveQL. Ban đầu nó được tạo tạiFacebook. |
Pig Latin là một ngôn ngữ luồng dữ liệu. | HiveQL là một ngôn ngữ xử lý truy vấn. |
Pig Latin là một ngôn ngữ thủ tục và nó phù hợp với mô hình đường ống. | HiveQL là một ngôn ngữ khai báo. |
Apache Pig có thể xử lý dữ liệu có cấu trúc, phi cấu trúc và bán cấu trúc. | Hive chủ yếu dành cho dữ liệu có cấu trúc. |
Các ứng dụng của Apache Pig
Apache Pig thường được các nhà khoa học dữ liệu sử dụng để thực hiện các nhiệm vụ liên quan đến xử lý đặc biệt và tạo mẫu nhanh. Apache Pig được sử dụng -
- Để xử lý các nguồn dữ liệu khổng lồ như nhật ký web.
- Để thực hiện xử lý dữ liệu cho các nền tảng tìm kiếm.
- Để xử lý tải dữ liệu nhạy cảm về thời gian.
Apache Pig - Lịch sử
Trong 2006, Apache Pig được phát triển như một dự án nghiên cứu tại Yahoo, đặc biệt là để tạo và thực thi các công việc MapReduce trên mọi tập dữ liệu. Trong2007, Apache Pig được mở nguồn thông qua lồng ấp Apache. Trong2008, bản phát hành đầu tiên của Apache Pig ra mắt. Trong2010, Apache Pig đã tốt nghiệp với tư cách là một dự án cấp cao nhất của Apache.