Tạo một Kafka Producer để giả lập nguồn dữ liệu đầu vào bằng ngôn ngữ Scala

Hi all, như đã nói trong phần cuối của bài cài đặt Kafka, hôm nay tui sẽ thử viết một cái custom Producer để tạo nguồn dữ liệu đầu vào cho Kafka Single Node. Trong bài trước, tui đã thử chạy cái producer mặc định của Kafka đó là mỗi lần nhập một đoạn text từ bàn phím thì bên Consumer sẽ nhận được cái đoạn text đó ngay tức thì. Vậy, cái event xảy ra đó là nhập liệu từ bàn phím và data phát sinh ra từ cái event này chính là nội dung text mà tui đã nhập. Do đó, tạo một custom Producer chẳng qua là mình sẽ làm cái việc là cho cái custom Producer này collect dữ liệu từ các event khác nhau rồi xào nấu gì đó với cái data này sau đó send nó đi.

Do tui vẫn muốn sử dụng lại cái chương trình WordCount lúc trước khi tìm hiểu Spark, thay vì WordCount nó sẽ đọc text từ file rồi thống kê từ thì bây giờ tui muốn là chương trình WordCount nó sẽ hứng dữ liệu từ Kafka Streaming, có nghĩa là chương trình WordCount của Spark sẽ làm Consumer. Vậy nên, cái custom Producer này nó sẽ đọc data Words ở đâu đó, cụ thể là từ một file chứa 500 từ, mỗi lần nó chỉ lấy ramdom 10 từ, sau đó send 10 từ này đi, WordCount sẽ hứng lấy 10 từ này và thông kê. Trong phạm vi bài hôm nay, tui sẽ tạo cái Producer này, bài kế tiếp tui sẽ chỉnh sửa cái chương trình WordCount lại thành Consumer của Kafka. Các bạn xem workflow như sau:

Tuy là làm demo thì 3 cái block này nằm trên một máy localhost, nhưng trên thực tế nếu có điều kiện thì 3 block này có thể nằm trên 3 hệ thống khác nhau. (more…)

Read More