Tôi nghĩ rằng tôi đã tìm thấy vấn đề:mongodb-hadoop có một công cụ sửa đổi "tĩnh" trên các phiên bản bộ mã hóa / giải mã BSON của nó trong lõi / src / main / java / com / mongodb / hadoop / input / MongoInputSplit.java. Khi Spark chạy ở chế độ đa luồng, tất cả các chuỗi sẽ thử và deserialise bằng cách sử dụng giống nhau các phiên bản bộ mã hóa / bộ giải mã, có thể đoán trước được kết quả không tốt.
Bản vá trên github của tôi tại đây (đã gửi yêu cầu kéo ngược dòng)
Bây giờ tôi có thể chạy 8 lõi Spark-> mongo collection count () từ Python!