2011-11-07 11 views
5

(Thậm chí cơ bản hơn Difference between Pig and Hive? Why have both?)Sử dụng Pig/Hive để xử lý dữ liệu thay vì giảm mã trực tiếp bản đồ java?

Tôi có một đường ống xử lý dữ liệu bằng văn bản trong một số Java bản đồ giảm nhiệm vụ trên Hadoop (mã tùy chỉnh của riêng tôi, có nguồn gốc từ Mapper và Giảm Hadoop của). Đó là một loạt các hoạt động cơ bản như tham gia, nghịch đảo, sắp xếp và nhóm theo. Mã của tôi là tham gia và không phải là rất chung chung.

Ưu điểm và nhược điểm của việc tiếp tục phương pháp thừa nhận được phát triển này là gì trước khi di chuyển mọi thứ sang Pig/Hive với một số UDF? Tôi sẽ không thể thực hiện công việc nào? Tôi sẽ bị suy thoái hiệu suất (làm việc với 100 của bệnh lao)? sao tôi sẽ mất khả năng tinh chỉnh và gỡ lỗi mã khi duy trì? tôi sẽ có thể phân phối một phần công việc như bản đồ Java-giảm và sử dụng đầu vào-đầu ra của họ với công việc Pig/Hive của tôi?

Trả lời

8

Tham khảo Twitter: Thông thường, tập lệnh Pig là 5% mã của bản đồ/giảm gốc được viết bằng khoảng 5% thời gian. Tuy nhiên, các truy vấn thường mất từ ​​110-150% thời gian để thực thi một công việc bản đồ/giảm có thể đã thực hiện. Nhưng tất nhiên, nếu có một thói quen có hiệu suất cao nhạy cảm, họ vẫn có tùy chọn để viết mã trực tiếp các chức năng bản đồ/giảm bản địa.

Tham chiếu trên cũng nói về ưu và khuyết điểm của Pig trong việc phát triển các ứng dụng trong MapReduce.

Như với bất kỳ ngôn ngữ cấp cao hơn hoặc trừu tượng, tính linh hoạt và hiệu suất bị mất với Pig/Hive với chi phí năng suất của nhà phát triển.

+8

(Tôi làm việc trên Pig tại Twitter): Số 110-150% có phần tùy ý. Thông thường, Pig sẽ nhanh hơn mã của bạn vì nó thực hiện rất nhiều tối ưu hóa. Về cơ bản, nó dịch những thứ sang MR, vì vậy nó không thể nhanh hơn MR. Tuy nhiên, mã MR mới bắt đầu từ trung cấp đến thường sẽ thua Pig. – SquareCog

+0

Thnx cho thông tin chi tiết. –

3

Trong số này paper tính đến năm 2009, con lợn chạy chậm hơn 1,5 lần so với MapReduce đơn giản. Dự kiến ​​các công cụ mức cao hơn được xây dựng trên Hadoop hoạt động chậm hơn MapReduce đơn giản, tuy nhiên đúng là MapReduce thực hiện tối ưu một người dùng cao cấp viết rất nhiều mã soạn sẵn (ví dụ: bộ so sánh nhị phân).

Tôi thấy nó có liên quan để đề cập đến một API mới được gọi là Pangool (mà tôi là nhà phát triển) nhằm thay thế API MapReduce Hadoop đơn giản bằng cách làm cho nhiều thứ dễ dàng hơn để mã hóa và hiểu (sắp xếp thứ cấp, giảm bớt) bên tham gia). Pangool không áp đặt chi phí thực hiện (chỉ 5% là first benchmark) và giữ lại tất cả sự linh hoạt của API MapRed gốc.