2013-06-14 65 views
13

Tôi muốn nghe suy nghĩ và kinh nghiệm của bạn về việc sử dụng CQL và bộ máy truy vấn trong bộ nhớ Spark/Shark. Từ những gì tôi biết, bộ xử lý CQL đang chạy bên trong Cassandra JVM trên mỗi nút. Bộ xử lý truy vấn Shark/Spark gắn với một cụm Cassandra đang chạy bên ngoài trong một cụm riêng biệt. Ngoài ra, Datastax có phiên bản DSE của Cassandra cho phép triển khai Hadoop/Hive. Câu hỏi đặt ra là trong trường hợp sử dụng, chúng tôi sẽ chọn một giải pháp cụ thể thay cho giải pháp khác.So sánh CQL của Cassandra với các truy vấn Spark/Shark vs Hive/Hadoop (phiên bản DSE)

Trả lời

31

Tôi sẽ chia sẻ một vài suy nghĩ dựa trên kinh nghiệm của mình. Tuy nhiên, nếu có thể cho bạn, vui lòng cho chúng tôi biết về trường hợp sử dụng của bạn. Nó sẽ giúp chúng tôi trả lời các truy vấn của bạn một cách tốt hơn.

1- Nếu bạn định viết nhiều hơn đọc, Cassandra rõ ràng là một lựa chọn tốt. Có nói rằng, nếu bạn đang đến từ nền SQL và lập kế hoạch để sử dụng Cassandra thì bạn chắc chắn sẽ tìm thấy CQL rất hữu ích. Nhưng nếu bạn cần thực hiện các thao tác như JOIN và GROUP BY, mặc dù CQL giải quyết các trường hợp sử dụng GROUP BY nguyên thủy thông qua thời gian viết và thời gian nén và thực hiện các mối quan hệ một-nhiều, CQL không phải là câu trả lời.

2- Spark SQL (trước đây là Shark) là rất nhanh vì hai lý do, xử lý trong bộ nhớ và lập kế hoạch đường ống dữ liệu. Xử lý trong bộ nhớ làm cho nó nhanh hơn 100 lần so với Hive. Giống như Hive, Spark SQL xử lý lớn hơn các loại dữ liệu bộ nhớ rất tốt và lên đến 10x nhanh hơn nhờ các đường ống dự kiến. Tình hình chuyển sang lợi ích Spark SQL khi có nhiều đường ống dữ liệu như bộ lọc và nhómBởi. Đi cho nó khi bạn cần truy vấn thời gian thực ad-hoc. Không phù hợp khi bạn cần các công việc lâu dài trên lượng dữ liệu khổng lồ.

3- Hive về cơ bản là một kho lưu trữ chạy trên cụm Hadoop hiện có của bạn và cung cấp cho bạn SQL giống như giao diện để xử lý dữ liệu của bạn. Nhưng Hive không phù hợp với nhu cầu thời gian thực. Nó phù hợp nhất cho xử lý hàng loạt ngoại tuyến. Không cần thêm bất kỳ thông tin nào vì nó sử dụng HDFS cơ bản để lưu trữ dữ liệu. Đi cho nó khi bạn phải thực hiện các hoạt động như JOIN, GROUP BY vv trên tập dữ liệu lớn và cho OLAP.

Note : Spark SQL mô phỏng hành vi Hive Apache trên đỉnh Spark, vì vậy nó hỗ trợ hầu như tất cả các tính năng của Hive nhưng có khả năng nhanh hơn. Nó hỗ trợ ngôn ngữ truy vấn Hive hiện có, các định dạng dữ liệu Hive (SerDes), các hàm do người dùng định nghĩa (UDF) và các truy vấn gọi các kịch bản lệnh bên ngoài.

Nhưng tôi nghĩ bạn sẽ có thể đánh giá ưu và nhược điểm của tất cả các công cụ này chỉ đúng sau khi bị bẩn tay. Tôi chỉ có thể đề xuất dựa trên câu hỏi của bạn.

Hy vọng điều này sẽ trả lời một số truy vấn của bạn.

P.S. : Câu trả lời trên chỉ dựa trên kinh nghiệm của tôi. Nhận xét/chỉnh sửa được hoan nghênh.

+4

tặng một lý do để downvote, tôi sẽ chấp nhận nó với spirit..Just không làm điều này giống như một 5 tuổi. – Tariq

+1

Xin lỗi, nó vô tình. Tôi thậm chí không nhận thấy tôi đã làm điều đó cho đến khi tôi kiểm tra lại ngày hôm nay. – Gavin

+0

-1 Spark SQL (trước đây là Shark) biên dịch SQL thành các hoạt động RDD trên đỉnh của Spark và cung cấp các cơ sở để biên dịch HiveQL cho các hoạt động RDD của Spark thay vì các hoạt động bản đồ và giảm trên đầu trang của Hadoop. Spark cũng không chỉ trong bộ nhớ, nó vẫn xử lý các tập dữ liệu được phân trang đến đĩa nhanh gấp 10 lần. –

Các vấn đề liên quan