Durante el desarrollo de nuestros trabajos de reducción de mapas, nuestro código MR genera estructuras de datos de diagnóstico útiles, independientemente de que los datos se reduzcan en el mapa. ¿Hay alguna manera fácil de obtener estos datos en el código que llamó mapReduce o persistirlos en Mongo? Simplemente escribiendo en el archivo de registro está resultando ser muy poco óptimo ya que (a) hay una gran cantidad de datos allí y (b) nuestra información de diagnóstico está muy estructurada y, de hecho, nos gustaría ejecutar consultas contra eso.MongoDB: efectos secundarios de mapReduce
Mi investigación hasta ahora sugiere que las estructuras de datos MR se pasan por valor (a través de serialización) por lo que se pierden las estructuras de datos en memoria, incluidas las conectadas al alcance "global". Los espacios de nombres están aislados del espacio de nombres del lado del servidor JS principal, así que dbeval
parece que no puede alcanzarlos (o, al menos, no sé dónde mirar). Por último, aunque todos los objetos y funciones de la base de datos están presentes, 10gen está generando (confundiendo) mensajes de error para evitar su uso, por ejemplo, aproximadamente coll.insert
no siendo una función, mientras que typeof coll.insert === 'function'
es true
.
Para ser claro, me interesa hacer esto para el desarrollo en un solo nodo, porque el soporte de registro/depuración en MongoDB es bastante limitado. Este tipo de efectos secundarios no son buenos en entornos de producción.
¿Qué tipo de información exactamente genera? El resultado de MR puede persistir en una colección. En C#, lo especifico como: MyInputCollection.MapReduce (map, reduce, MapReduceOptions.SetOutput ("MyOutputCollection")); A continuación, lee desde la colección persistente 'MyOutputCollection'. –
Quiero guardar información que es independiente de la salida MR. Piense en ello como un escape de datos, por ejemplo, para la información estructurada detallada de registro/evaluación comparativa que deseo procesar con código, por lo que no quiero que termine en los archivos de registro. – Sim
¿Ha intentado utilizar una colección limitada para el registro? No entiendo por qué coll.insert debería fallar ... –