tôi đang làm việc trên một ứng dụng nodejs kết hợp với riak/riak-js và chạy vào các vấn đề sau đây:Riak thất bại trong các truy vấn MapReduce. Cấu hình nào sẽ sử dụng?
Chạy yêu cầu này
db.mapreduce
.add('logs')
.run();
corretly trả về tất cả 155.000 mục lưu trữ trong các bản ghi xô với họ ID:
[ 'logs', '1GXtBX2LvXpcPeeR89IuipRUFmB' ],
[ 'logs', '63vL86NZ96JptsHifW8JDgRjiCv' ],
[ 'logs', 'NfseTamulBjwVOenbeWoMSNRZnr' ],
[ 'logs', 'VzNouzHc7B7bSzvNeI1xoQ5ih8J' ],
[ 'logs', 'UBM1IDcbZkMW4iRWdvo4W7zp6dc' ],
[ 'logs', 'FtNhPxaay4XI9qfh4Cf9LFO1Oai' ],
....
Nếu tôi chỉ định một bản đồ-Funktion và chỉ sử dụng một vài trong số các mục trong xô đăng
db.mapreduce
.add([['logs', 'SUgJ2fhfgyR2WE87n7IVHyBi4C9'], ['logs', 'EMtywD1UFnsq9rNRuINLzDsHdh2'], ['logs', 'ZXPh5ws8mOdASQFEtLDk8CBRn8t']])
.map(function(v) {return ["asd"]; })
.run();
tất cả mọi thứ đang làm việc tốt và sau đây, sản lượng dự kiến sẽ được trả về:
[ 'asd', 'asd', 'asd' ]
Nếu tôi bây giờ muốn riak để lập bản đồ tất cả các mục (khoảng 155.000 tài liệu json nhỏ) trong xô "nhật ký"
db.mapreduce
.add('logs')
.map(function(v) {return ["asd"]; })
.run();
tôi chỉ nhận được lỗi:
{ [Error: [object Object]] message: '[object Object]', statusCode: 500 }
gì xảy ra ở đây? Trong Lỗi-đối tượng không có gì hữu ích được viết.
Cập nhật: Các riak-console nói nhiều lần như sau:
[notice] JS call failed: All VMs are busy.
Sau incrementing map_js_vm_count trong riaks app.config đến 36, thông điệp biến thành:
[error] Pipe worker startup failed:fitting was gone before startup
Links: Basho Labs Riak Driver riak-js
Hi Bryan, cảm ơn vì câu trả lời tuyệt vời của bạn, nó giúp rất nhiều cho một sự hiểu biết sâu sắc hơn về riak. Bạn nói đúng, tôi đang sử dụng cụm phát triển mặc định một nút. Sau khi giảm kích thước vòng xuống 8 như bạn đã đề cập, mọi thứ đều hoạt động tốt. –