Tôi đang cố gắng đếm số lượng người dùng duy nhất mỗi ngày trên ứng dụng appengine java của mình. Tôi đã quyết định sử dụng framework mapreduce (mapreduce.appspot.com) cho appengine java để thực hiện phép tính này ngoại tuyến. Tôi đã quản lý để tạo ra một bản đồ giảm công việc mà đi qua tất cả các thực thể của tôi đại diện cho một sự kiện phiên người dùng duy nhất. Tôi cũng có thể sử dụng một bộ đếm đơn giản. Tuy nhiên, tôi có một số câu hỏi:Đếm người dùng duy nhất bằng Mapreduce cho Java Appengine
1) Làm thế nào để tôi chỉ tăng số lượt truy cập một lần cho mỗi id người dùng? Tôi hiện đang lập bản đồ đối với các thực thể có chứa thuộc tính id người dùng nhưng nhiều thực thể trong số này có thể chứa cùng một id người dùng, vậy làm thế nào để tôi chỉ đếm nó một lần?
2) Khi tôi có các kết quả này của công việc được lưu trữ trong các bộ đếm này - làm cách nào tôi có thể lưu giữ chúng vào kho dữ liệu? Tôi thấy kết quả của các quầy trên trang trạng thái của mapreduce nhưng tôi muốn các kết quả này tự động tồn tại trong kho dữ liệu.
Ý tưởng?
"mỗi lần bạn tìm thấy một thực thể duy nhất" - làm thế nào để bạn biết thực thể bạn đang xem (hiện đang lập bản đồ) là một thực thể bạn đã thấy trước đây chưa? – aloo
Giả sử người lập bản đồ của bạn chỉ được cung cấp thực thể với userid ABC123. điều đầu tiên bạn sẽ làm là kiểm tra xem có một thực thể UniqueCount cho ABC123 hay không. Nếu có, bạn biết bạn đã chiếm nó, và bạn sẽ không làm gì cả. Nếu không có, bạn sẽ tạo một thực thể UniqueCount cho ABC123. Sau khi bạn đã thực hiện điều đó cho tất cả các thực thể của mình, bạn sẽ có chính xác một thực thể UniqueCount cho mỗi người dùng. Sau đó, bạn có thể thực hiện một số lượng đơn giản hơn chỉ với các thực thể UniqueCount. –
Ahh vì vậy việc này liên quan đến việc tạo một loại Thực thể khác trong kho dữ liệu ... và chạy hai lần. Có vẻ hợp lý nhưng đã hy vọng cho một giải pháp đơn giản – aloo