Sau khi thu thập dữ liệu Twitter và lưu vào master_dataset table như đã hướng dẫn trong bài Thu thập và lưu trữ dữ liệu, chúng ta tiếp tục viết chương trình xử lý dữ liệu trong table này dưới dạng Batch Processing (Batch layer trong Lambda Architecture). Công việc này được thực hiện bởi BatchProcessingActor với đoạn code sau ( các bạn tham khảo thêm về cách sử dụng Spark để sử lý dữ liệu lưu trong Cassandra tại bài tutorial Kết nối Spark với Cassandra)

Ở đây, chúng ta cũng sử dụng AppConfiguarion như trong bài Thu thập và lưu trữ dữ liệu để truy xuất tham số tweetDuration và batchInterval đã được thiết lập trong /resources/application.conf:

– tweetDuration: dùng để giới hạn khoảng thời gian của tweet cần được phân tích. Trong project này, chúng ta thiết lập tweetDuration = 3 hours, tức là chỉ tiến hành phân tích hashtag của các tweets được đăng tải trong vòng 3 giờ qua (sử dụng hàm dataFrame.filter() để lọc các tweets này)

– batchInterval: là khoảng thời gian giữa các lần chạy Batch Processing. Chúng ta thiết lập batchInterval = 30 minutes, tức là hệ thống sẽ tiến hành chạy Batch Processing cứ 30 phút một lần. Ở đây chúng ta sử dụng Akka Scheduler để thiết lập thời gian chạy này (các bạn tham khảo thêm về Akka tại loạt bài tutorials Apache Akka)

Chạy chương trình Runner ta được kết quả sau:

Lưu ý:

– Trong chương trình trên, một số hàm println() được sử dụng để in kết quả ra màn hình nhằm giúp bạn đọc hiểu rõ hơn về hoạt động của BatchProcessingActor. Tuy nhiên trong đoạn code cuối cùng của project thì những phần này sẽ bị lược bỏ để tránh việc sử dụng tài nguyên không cần thiết. Ngoài ra chúng ta cũng sẽ chuyển phần Runner vào trong main_package và thêm phần khởi động Realtime Processing vào BatchProcessingActor (sẽ giải thích trong bài Xử lý truy vấn của người dùngChạy chương trình dưới dạng Client – Server)

– Trong phạm vi của project này, chúng ta lưu kết quả của việc xử lý dữ liệu dưới dạng Batch Processing vào hashtag_batchview table bằng cách xóa kết quả của các lần chạy Batch Processing trước. Tuy nhiên, trong thực tế, chúng ta thường lưu lại kết quả của các lần chạy Batch Processing nhằm mục đích phân tích và thống kê sau này.

Tháng Ba 16, 2019
ITechSeeker