在我们的 map-reduce 作业的开发过程中,我们的 MR 代码独立于被 map-reduce 的数据生成有用的诊断数据结构。有没有一种简单的方法可以将这些数据导出到调用 mapReduce 的代码中或将它们保存在 Mongo 中?仅写入日志文件结果是非常次优的,因为 (a) 那里已经有很多数据,并且 (b) 我们的诊断信息是高度结构化的,事实上,我们希望针对它。
到目前为止,我的调查表明 MR 数据结构是按值传递的(通过序列化),因此任何内存中的数据结构都会丢失,包括那些与“全局”范围挂钩的数据结构。命名空间与主要的 JS 服务器端命名空间隔离,因此dbeval
似乎无法访问它们(或者,至少,我不知道去哪里寻找)。最后但同样重要的是,尽管所有数据库对象和函数都存在,但 10gen 正在生成(令人困惑的)错误消息以阻止它们的使用,例如,关于在iscoll.insert
时不是函数的信息。typeof coll.insert === 'function'
true
需要明确的是,我有兴趣在单个节点中进行开发,因为 MongoDB 中的日志记录/调试支持非常有限。这种类型的副作用在生产环境中不好。