Tôi đang viết một ứng dụng có Luồng Kafka (v0.10.0.1) và muốn làm phong phú thêm các bản ghi mà tôi đang xử lý bằng dữ liệu tra cứu. Dữ liệu này (tệp thời gian) được ghi vào thư mục HDFS trên cơ sở hàng ngày (hoặc 2-3 lần một ngày).Dòng Kafka với dữ liệu tra cứu trên HDFS
Làm cách nào để tải ứng dụng này trong ứng dụng Kafka Streams
và tham gia vào KStream
thực tế?
Thực hành tốt nhất để đọc lại dữ liệu từ HDFS khi một tệp mới đến đó là gì?
Hoặc sẽ chuyển đổi thành Kafka Connect
và viết nội dung bảng RDBMS thành chủ đề Kafka có thể được tiêu thụ bởi tất cả các trường hợp ứng dụng Kafka Streams?
Cập nhật:
Như đã đề cập Kafka Connect sẽ là con đường để đi. Vì dữ liệu tra cứu được cập nhật trong RDBMS trên cơ sở hàng ngày, tôi đã nghĩ đến việc chạy Kafka Connect theo lịch biểu one-off job thay vì giữ kết nối luôn mở. Có, bởi vì ngữ nghĩa và chi phí của việc giữ một kết nối luôn luôn mở và đảm bảo rằng nó sẽ không bị gián đoạn..vv. Đối với tôi, việc tìm nạp được lên lịch trong trường hợp này sẽ an toàn hơn.
Dữ liệu tra cứu không lớn và các bản ghi có thể là đã xóa/thêm/sửa đổi. Tôi không biết làm thế nào tôi luôn có thể có một bãi chứa đầy đủ vào một chủ đề Kafka và cắt ngắn các hồ sơ trước đó. Việc bật tính năng nén nhật ký và gửi giá trị null cho các khóa đã bị xóa có thể sẽ không hoạt động vì tôi không biết những gì đã bị xóa trong hệ thống nguồn. Ngoài ra AFAIK tôi không có quyền kiểm soát khi quá trình nén xảy ra.
Tôi không quen với các chi tiết của Kafka Connect, nhưng việc sử dụng nó để đưa dữ liệu vào một chủ đề là cách được khuyến nghị để xử lý nó bằng luồng Kafka. Tuy nhiên, nó sẽ là xấu cho trường hợp của bạn nếu Connect cập nhật liên tục thay vì hàng ngày? Thay vào đó, bạn luôn có thể sử dụng API bộ xử lý cho phép thực thi mã tùy ý. Tuy nhiên, nó nỗ lực nhiều hơn để sử dụng. –