¿Cómo ejecutar una función Erlang MapReduce en Riak?

Soy nuevo en Riak y nuevo en Erlang. He creado y ejecutado con éxito trabajos de JS MapReduce, ahora estoy tratando de ejecutar la siguiente función de reducción:

http://web.archive.org/web/20130329021000/http://contrib.basho.com/delete_keys.html

¿Cuáles son los pasos para ejecutar esta función de reducción? Específicamente,

  • ¿Dónde debo poner el código?
  • ¿Qué debo escribir en addReducePhase( ) ?

Muchas Gracias

preguntado el 11 de junio de 12 a las 19:06

1 Respuestas

Deberías escribir algo como:

MapReduceResult result = client.mapReduce("myBucket")
    .addLinkPhase("bucketX", "test", false)
    .addMapPhase(new NamedJSFunction("Riak.mapValuesJson"), false)
    .addReducePhase(new NamedErlangFunction("riak_kv_mapreduce", "reduce_sort"), true)
.execute();

En este caso, la fase reduce llama a la función reduce_sort del módulo erlang riak_kv_mapreduce. En su caso debe llamar

.addReducePhase(new NamedErlangFunction("reduce_functions", "delete"), true)

(el verdadero al final es un indicador que establece si los resultados deben devolverse al cliente - último paso - o no - paso intermedio -)

Los archivos Erlang deben compilarse como .beam antes de su uso y agregarse a los parámetros 'add_paths' en riak.config como

{add_paths, ["/home/vinz/riak/custom_modules/"]}

donde /home/vinz/riak/custom_modules es el directorio que contiene los módulos de Erlang compilados.

Consulta Léame del cliente Basho Java para mayor información. ¡Espero que esto ayude!

Respondido el 13 de junio de 12 a las 09:06

El ejemplo anterior no funciona. Como se dice aquí (wiki.basho.com/MapReduce.html#MapReduce-via-the-Erlang-API), debo establecer la configuración "add_paths" en app.config. Según el documento, "add_paths" es una "lista de rutas para agregar a la ruta del código de Erlang. Esta configuración es especialmente útil para permitir que Riak use módulos externos durante las consultas de MapReduce". ¿Debo compilar el módulo erlang primero? ¿Cómo debo nombrar el archivo? Gracias - Mark

Editado para referirme a tus preguntas. Acerca de cómo debe nombrar su archivo, arriba, el módulo riak_kv_mapreduce está contenido en un archivo llamado 'riak_kv_mapreduce.erl' y compilado en 'riak_kv_mapreduce.beam'. - Vicente Maggio

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.