2016-02-08 25 views
6

Tôi đang cố gắng tìm ra cách chúng tôi "hạt giống" trạng thái cửa sổ cho một số công việc truyền dữ liệu trực tuyến của chúng tôi. Kịch bản là chúng tôi có một luồng thông điệp diễn đàn, chúng tôi muốn phát ra một số lượng tin nhắn đang chạy cho mỗi chủ đề cho mọi thời đại, vì vậy chúng tôi có một công việc truyền dữ liệu trực tuyến với cửa sổ chung và kích hoạt phát ra mỗi lần ghi lại cho một chủ đề. Tất cả tốt cho đến nay. Nhưng trước nguồn luồng, chúng tôi có một tệp lớn mà chúng tôi muốn xử lý để có được số lượng lịch sử của chúng tôi, vì chủ đề tồn tại mãi mãi, chúng tôi cần số lượng lịch sử để thông báo kết quả từ nguồn luồng, vì vậy chúng tôi ' đã cần cùng một logic để chạy trên tệp, sau đó bắt đầu chạy trên nguồn luồng khi tệp bị cạn kiệt, trong khi vẫn giữ trạng thái cửa sổ.Trạng thái ban đầu cho công việc dataflow

ý tưởng hiện tại:

  • Viết một nguồn tùy chỉnh không giới hạn mà không đúng như vậy. Đọc trên tệp cho đến khi tệp cạn kiệt và sau đó bắt đầu đọc từ luồng. Không vui lắm vì viết các nguồn tùy chỉnh không vui lắm.
  • Chạy logic ở chế độ hàng loạt trên tệp và khi bước cuối cùng phát ra trạng thái cho luồng bị gián đoạn bằng cách nào đó, sau đó có phiên bản trực tuyến của logic bắt đầu đọc từ cả luồng trạng thái và luồng dữ liệu. bằng cách nào đó kết hợp cả hai. Điều này dường như làm cho một số ý nghĩa, nhưng không chắc chắn làm thế nào để đảm bảo rằng công việc streaming đọc tất cả mọi thứ từ nguồn nhà nước, để khởi tạo, trước khi đọc từ dòng dữ liệu.
  • Nhập dữ liệu lịch sử vào luồng, viết công việc đọc từ cả hai luồng. Cùng một vấn đề như giải pháp thứ hai, không chắc chắn làm thế nào để đảm bảo một dòng là "tiêu thụ" đầu tiên.

CHỈNH SỬA: Tùy chọn mới nhất và những gì chúng tôi đang làm, là viết công việc tính toán sao cho nó không quan trọng đến thứ tự các sự kiện đến, vì vậy chúng tôi sẽ đẩy lưu trữ vào chủ đề pub/sub và tất cả sẽ hoạt động. Điều đó làm việc trong trường hợp này, nhưng rõ ràng nó ảnh hưởng đến người tiêu dùng ở hạ lưu (cần hỗ trợ cập nhật hoặc rút lại) vì vậy tôi muốn biết những giải pháp khác mà mọi người có để gieo trồng trạng thái cửa sổ của họ.

Trả lời

2

Bạn có thể làm những gì bạn đã đề xuất trong dấu đầu dòng 2 --- chạy hai đường ống (trong cùng một chính), với cột đầu tiên điền chủ đề pubsub từ tệp lớn. Điều này tương tự như ví dụ của StreamingWordExtract.

+0

Vâng, tôi thấy rằng chúng tôi có thể đưa dữ liệu vào công việc phát trực tuyến qua Pub/Sub, đó là câu hỏi liệu chúng tôi có thể đọc công việc từ chủ đề "chèn lấp" trước thay vì cố gắng đọc cả hai đồng thời và do đó có dấu thời gian sự kiện khác nhau rất lớn. – bfabry

+0

Cùng với chỉnh sửa của tôi ở trên, chúng tôi thiết kế tính toán là bất khả tri về thứ tự các sự kiện đến và thực hiện các kết quả đầu ra hỗ trợ đích của chúng tôi như vậy, điều này sẽ hiệu quả. Chúc mừng. – bfabry

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