Tôi đang làm việc trên dự án phát trực tuyến Scala (2.11)/Spark (1.6.1) và sử dụng mapWithState()
để theo dõi dữ liệu đã xem từ các đợt trước.Bản đồ SparkWithState xáo trộn tất cả dữ liệu đến một nút
Trạng thái được chia thành 20 phân vùng, được tạo bằng StateSpec.function(trackStateFunc _).numPartitions(20)
. Tôi đã hy vọng phân phối trạng thái trong toàn bộ cụm, nhưng có vẻ như mỗi nút giữ trạng thái hoàn chỉnh và việc thực hiện luôn được thực hiện chỉ một nút chính xác.
Locality Level Summary: Node local: 50
được hiển thị trong giao diện người dùng cho từng lô và lô hoàn chỉnh là ngẫu nhiên đọc. Sau đó, tôi viết thư cho Kafka và các phân vùng được lan truyền lại trên cụm. Tôi dường như không thể tìm ra lý do tại sao mapWithState()
cần phải được chạy trên một nút duy nhất. Điều này không làm hỏng khái niệm phân vùng trạng thái nếu nó bị giới hạn bởi một nút thay vì cụm hoàn chỉnh? Không thể phân phối trạng thái bằng khóa?
Tôi nghĩ bạn nên thêm DAG tia lửa của mình và thêm chi tiết hơn một chút về các loại bạn đang sử dụng với 'mapWithState'. –