2009-06-07 17 views

Respuesta

30

Para agregar a la respuesta en Hadoop: hay al menos dos envolturas de Scala que hacen que el trabajo con Hadoop sea más apetecible.

Scala MapReduce (SMR): http://scala-blogs.org/2008/09/scalable-language-and-scalable.html

SHadoop: http://jonhnny-weslley.blogspot.com/2008/05/shadoop.html

UPD 05 de octubre 11

También hay Scoobi marco, que tiene impresionante expresividad.

+0

SHadoop es bastante antiguo: utiliza el antiguo framework MR. Actualicé las implícitas en algún momento: https://github.com/schmmd/Hadoop-Scala-Commons – schmmd

+0

El escaldado también es una opción. https://github.com/twitter/scalding –

3

http://hadoop.apache.org/ es independiente del idioma.

+0

Lo siento pero no pedí la implementación de Java. De hecho, Hadoop se puede conectar a Scala, pero el código repetitivo debe escribirse en Java. –

+1

¿Escribes un ScalaHadoopAdapter que se encarga de todos los estándares y lo publica como gratuito/de código abierto? – yfeldblum

+7

el texto estándar no necesita estar escrito en java. – jshen

2

Hace un tiempo, encontré exactamente este problema y terminé escribiendo una pequeña infraestructura para que sea fácil usar Hadoop desde Scala. Lo usé por mi cuenta por un tiempo, pero finalmente logré ponerlo en la web. Se llama (muy originalmente) ScalaHadoop.

1

a otro punto de jshen:

hadoop de streaming simplemente utiliza sockets. Al usar transmisiones de Unix, su código (cualquier idioma) simplemente tiene que poder leer desde stdin y arrojar secuencias delimitadas por tabuladores. implemente un asignador y, si es necesario, un reductor (y si corresponde, configúrelo como el combinador).

2

Para una API scala en la parte superior de hadoop echa un vistazo a Scoobi, todavía está en desarrollo, pero muestra una gran promesa. También hay algún esfuerzo para implementar colecciones distribuidas en la parte superior de hadoop en el Scala incubator, pero ese esfuerzo aún no se puede utilizar.

También hay un nuevo contenedor scala para la cascada de Twitter, llamado Scalding. Después de mirar brevemente la documentación de escaldado parece que si bien hace que la integración con cascada sea más suave, todavía no resuelve lo que veo como el principal problema con la cascada: tipo de seguridad. Cada operación en cascada opera en tuplas en cascada (básicamente una lista de valores de campo con o sin un esquema separado), lo que significa que escribe errores, es decir Unir una clave como una Cadena y una clave como Largo lleva a fallas de tiempo de ejecución.

+0

Scalding tiene una API de tipo seguro: https://github.com/twitter/scalding/wiki/Type-safe-api-reference y en Fields API (que usted están mencionando), unir una cadena a una larga no causa excepciones de tiempo de ejecución (si ambos son números). Por supuesto, en la API de tipo seguro tal compilación está prohibida por el compilador. –

3

En lo personal, me he convertido en un gran fan de la chispa

http://spark-project.org/

Usted tiene la capacidad de hacer Cluster de Computación en memoria, lo que reduce significativamente los gastos generales que iba a experimentar operaciones de MapReduce uso intensivo del disco.