Apache Hive là một khung công tác nằm trên Hadoop để thực hiện các truy vấn đặc biệt về dữ liệu trong Hadoop. Hive hỗ trợ HiveQL, tương tự như SQL, nhưng không hỗ trợ các cấu trúc hoàn chỉnh của SQL.
Hive bao phủ truy vấn HiveQL vào chương trình Java MapReduce và sau đó gửi nó đến cụm Hadoop. Kết quả tương tự có thể đạt được khi sử dụng HiveQL và Java MapReduce, nhưng sử dụng Java MapReduce sẽ cần rất nhiều mã để được viết / gỡ lỗi so với HiveQL. Vì vậy, HiveQL tăng năng suất của nhà phát triển.
Tóm lại, Hive, thông qua ngôn ngữ HiveQL, cung cấp mức độ trừu tượng hóa cao hơn so với lập trình Java MapReduce. Như với bất kỳ sự trừu tượng hóa cấp độ cao nào khác, có một chút chi phí hiệu năng khi sử dụng HiveQL khi so sánh với Java MapReduce, nhưng cộng đồng Hive đang làm việc để thu hẹp khoảng cách này cho hầu hết các kịch bản thường được sử dụng.
Dọc theo đường cùng, Pig cung cấp mức độ trừu tượng cao hơn MapReduce. Pig hỗ trợ các cấu trúc PigLatin, được chuyển đổi thành chương trình Java MapReduce và sau đó được gửi đến cụm Hadoop.
Trong khi HiveQL là ngôn ngữ khai báo như SQL, PigLatin là ngôn ngữ luồng dữ liệu. Đầu ra của một cấu trúc PigLatin có thể được gửi làm đầu vào cho một cấu trúc PigLatin khác, v.v.
Thỉnh thoảng, Cloudera đã công bố số liệu thống kê về nhân vật khối lượng công việc trong cụm Hadoop điển hình và có thể dễ dàng quan sát thấy rằng các công việc Pig và Hive chiếm một phần tốt trong các công việc trong cụm Hadoop. Do năng suất của nhà phát triển cao hơn, nhiều công ty đang lựa chọn các bản tóm tắt cấp cao hơn như Pig và Hive. Vì vậy, chúng ta có thể đặt cược rằng sẽ có rất nhiều cơ hội việc làm xung quanh Hive và Pig khi so sánh với sự phát triển của MapReduce.
Mặc dù cuốn sách Lập trình Pig được xuất bản vào tháng 10 năm 2011, cuốn sách Lập trình Hive đã được xuất bản gần đây, vào tháng 10 năm 2012. Đối với những người có kinh nghiệm làm việc với RDBMS, bắt đầu với Hive sẽ là một lựa chọn tốt hơn so với bắt đầu với Pig. Cũng lưu ý rằng ngôn ngữ PigLatin không khó để bắt đầu.
Đối với cụm Hadoop bên dưới, nó minh bạch cho dù công việc Java MapReduce được gửi hay công việc MapReduce được gửi thông qua Hive và Pig. Do tính chất định hướng hàng loạt của các công việc MapReduce, các công việc được gửi qua Hive và Pig cũng được định hướng theo lô trong tự nhiên.
Đối với các yêu cầu đáp ứng thời gian thực, Hive và Pig không đáp ứng các yêu cầu do tính chất định hướng hàng loạt được đề cập trước đó của các công việc MapReduce. Cloudera đã phát triển Impala, dựa trên Drillac (một ấn phẩm từ Google) cho các truy vấn ad-hoc tương tác trên đầu Hadoop. Impala hỗ trợ các truy vấn giống như SQL và tương thích với HiveQL. Vì vậy, bất kỳ ứng dụng nào được xây dựng trên Hive nên hoạt động với những thay đổi tối thiểu với Impala. Sự khác biệt chính giữa Hive và Impala là trong khi HiveQL được chuyển đổi thành các công việc Java MapReduce, Impala không chuyển đổi truy vấn SQL thành các công việc MapReduce của Java.
Bạn nên đi với Pig hoặc Hive cho một yêu cầu cụ thể? Đó là một chủ đề cho một blog khác.
Tái xuất bản với sự cho phép từ Praveen Sripati. Bài viết gốc có thể được tìm thấy ở đây: http://www.thecloudavenue.com/2012/12/intributiontion-to-apache-hive-and-pig.html