2009-06-07 8 views

Antwort

30

Um die Antwort auf Hadoop hinzuzufügen: Es gibt mindestens zwei Scala-Wrapper, die die Arbeit mit Hadoop schmackhafter machen.

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. Oktober 11

Es gibt auch Scoobi Framework, das eine beeindruckende Ausdruckskraft hat.

+0

SHadoop ist ziemlich alt - es verwendet das alte MR-Framework. Ich habe die implicits irgendwann aktualisiert: https://github.com/schmdd/Hadoop-Scala-Commons – schmmd

+0

Verbrühung ist auch eine Option. https://github.com/twitter/scalding –

3

http://hadoop.apache.org/ ist Sprache agnostisch.

+0

Es tut mir leid, aber ich habe nicht nach Java-Implementierung gefragt. In der Tat kann Hadoop an Scala angeschlossen werden, aber der Standardcode muss in Java geschrieben werden. –

+1

Schreiben Sie einen ScalaHadoopAdapter, der sich um alle Textbausteine ​​kümmert und diese als frei/Open-Source veröffentlicht? – yfeldblum

+7

Der Textbaustein muss nicht in Java geschrieben werden. – jshen

2

Sie könnten interessiert sein an scouchdb, eine Scala-Schnittstelle zu verwenden CouchDB.

Eine andere Idee ist, GridGain zu verwenden. ScalaDudes haben ein Beispiel für die Verwendung von GridGain mit Scala. Und here ist ein weiteres Beispiel.

2

Vor einiger Zeit habe ich genau dieses Problem gelöst und am Ende eine kleine Infrastruktur geschrieben, um die Verwendung von Hadoop von Scala zu vereinfachen. Ich habe es eine Weile alleine benutzt, aber letztendlich habe ich es ins Internet gestellt. Es heißt (sehr ursprünglich) ScalaHadoop.

1

weiter jshen der Punkt:

hadoop Streaming verwendet einfach Steckdosen. Bei Verwendung von Unix-Streams muss Ihr Code (in jeder Sprache) einfach nur von stdin- und output tab-delimierten Streams lesen können. Implementieren Sie einen Mapper und bei Bedarf einen Reduzierer (und konfigurieren Sie diesen gegebenenfalls als Combiner).

2

Für eine Scala API oben auf Hadoop überprüfen Sie Scoobi, es ist immer noch in der schweren Entwicklung, aber zeigt viel versprechen. Es gibt auch einige Bemühungen, verteilte Sammlungen oben auf dem Hadoop in der Scala incubator zu implementieren, aber dieser Aufwand ist noch nicht verwendbar.

Es gibt auch einen neuen Scala-Wrapper für die Kaskadierung von Twitter, genannt Scalding. Nach einem kurzen Blick auf die Dokumentation für Verbrühung scheint es , dass während es die Integration mit kaskadierenden glatter macht es immer noch nicht lösen, was ich sehe, wie das Hauptproblem mit Kaskadierung: Typ Sicherheit. Jede Operation in Kaskadierung arbeitet mit Kaskadierungstupeln (im Grunde eine Liste von Feldwerten mit oder ohne ein separates Schema), was bedeutet, dass Typfehler, d.i. Wenn Sie einen Schlüssel als String und einen Schlüssel als Long verknüpfen, führt dies zu Laufzeitfehlern .

+0

Scalding hat eine typsichere API: https://github.com/twitter/scalding/wiki/Type-safe-api-reference und in der Fields-API (die Sie erwähnen, dass das Verknüpfen einer Zeichenfolge mit einer langen keine Laufzeitausnahmen verursacht (wenn sie beide Nummern sind). Natürlich ist in der typsicheren API ein solcher Join vom Compiler verboten. –

3

Persönlich habe ich ein großer Fan von Funken wird

http://spark-project.org/

Sie haben die Möglichkeit, In-Memory-Cluster-Computing zu tun, erheblich den Aufwand reduzieren Sie von der Festplatte intensiver mapreduce Operationen erfahren würden.