2009-06-07 7 views

risposta

30

Per aggiungere alla risposta su Hadoop: ci sono almeno due wrapper Scala che rendono più appetibile il lavoro con Hadoop.

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

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

UPD 5 ottobre 11

C'è anche il quadro Scoobi, che ha un'incredibile espressività.

+0

SHadoop è piuttosto vecchio - utilizza il vecchio framework MR. Ho aggiornato gli impliciti a un certo punto: https://github.com/schmmd/Hadoop-Scala-Commons – schmmd

+0

Scalding è anche un'opzione. https://github.com/twitter/scalding –

3

http://hadoop.apache.org/ è indipendente dal linguaggio.

+0

Mi dispiace ma non ho chiesto l'implementazione Java. In effetti, Hadoop può essere inserito in Scala ma il codice boilerplate deve essere scritto in Java. –

+1

Scrivi un Adattatore ScalaHadoop che si occupa di tutto lo standard e lo pubblica come libero/open-source? – yfeldblum

+7

non è necessario scrivere il codice di avviamento in java. – jshen

2

Potresti essere interessato a scouchdb, un'interfaccia di Scala per l'utilizzo di CouchDB.

Un'altra idea è utilizzare GridGain. ScalaDudes hanno un esempio di utilizzo di GridGain con Scala. E here è un altro esempio.

2

Un po 'di tempo fa, mi sono imbattuto in esattamente questo problema e ho finito per scrivere una piccola infrastruttura per rendere facile l'uso di Hadoop da Scala. L'ho usato da solo per un po ', ma alla fine sono riuscito a metterlo sul web. Si chiama (in origine) ScalaHadoop.

1

a punto ulteriormente di jshen:

in streaming Hadoop usa semplicemente prese. utilizzando gli stream unix, il tuo codice (qualsiasi lingua) deve semplicemente essere in grado di leggere da stdin e output di flussi delimitati da tabulazioni. implementare un mapper e, se necessario, un riduttore (e se necessario, configurarlo come combinatore).

2

Per una scala API in cima al hadoop check out Scoobi, è ancora in fase di sviluppo ma mostra molte promesse. C'è anche qualche sforzo per implementare le raccolte distribuite su hadoop nello Scala incubator, ma questo sforzo non è ancora utilizzabile.

C'è anche un nuovo scala wrapper per il collegamento in cascata da Twitter, chiamato Scalding. Dopo aver esaminato molto brevemente la documentazione di Scalding, sembra che sia che mentre fa l'integrazione con la cascata più agevole, lo fa ancora non risolve quello che vedo come il problema principale con la cascata: digitare la sicurezza. Ogni operazione in cascata opera su tuple a cascata (in pratica un elenco di valori di campo con o senza uno schema separato), il che significa che gli errori di tipo , I.e. Unire una chiave come una stringa e una chiave come una lunga conduce agli errori di runtime.

+0

Scalding ha un'API sicura dal tipo: https://github.com/twitter/scalding/wiki/Type-safe-api-reference e nell'API Fields (che tu stiamo menzionando), unire una stringa ad un lungo non causa eccezioni run-time (se sono entrambi numeri). Naturalmente, nell'API sicuro dal tipo un join è proibito dal compilatore. –

3

Personalmente, sono diventato un grande fan di Spark

http://spark-project.org/

Hai la possibilità di fare in memoria cluster di calcolo, riducendo in modo significativo le spese generali si sarebbe esperienza da operazioni MapReduce disk-intensive.