ビッグデータベースの分析プロジェクトを開始しており、scala (タイプセーフ スタック) の採用を検討しています。hadoop や map reduce プログラムを実行するために利用できるさまざまな scala API/プロジェクトを知りたいです。
5 に答える
Scaldingをぜひチェックしてください。ユーザーとして、そして時折寄稿者として話すと、私はそれが非常に便利なツールであることを発見しました. また、Scalding API は、標準の Scala コレクション API との互換性が高いことも意図しています。通常のコレクションで flatMap 、 map 、または groupBy を呼び出すことができるのと同じように、タプルの分散リストとして想像できるパイプのスカルドでも同じことができます。より強力なタイプ セーフ保証を提供する型付きバージョンの API もあります。私は Scoobi を使ったことはありませんが、API は彼らが持っているものと似ているようです。
さらに、他にもいくつかの利点があります。
- Scalding は Twitter の本番環境で頻繁に使用されており、Twitter 規模のデータセットで実戦テストが行われています。
- Twitter の内部と外部の両方に、それを素晴らしいものにすることに尽力しているアクティブな貢献者が何人かいます。
- 既存のカスケーディング ジョブと相互運用できます。
- 型付き API に加えて、R およびデータ フレーム フレームワークのユーザーにとってより馴染みのある Fields API があります。
- 堅牢なマトリックス ライブラリを提供します。
私はScoobiで成功しました。簡単に使用でき、強く型付けされ、Hadoop の混乱のほとんどを隠し (オブジェクトを自動的にシリアライズするなどして)、完全に Scala です。その API について私が気に入っている点の 1 つは、設計者が Scoobi コレクションを標準の Scala コレクションと同じように感じさせたいと考えていたことです。そのため、操作がローカルではなく Hadoop で実行されることを除いて、実際にはほとんど同じように使用できます。これにより、開発中やテスト中に Scoobi コレクションと Scala コレクションを簡単に切り替えることができます。
また、Java ベースの Crunch の上に構築されたScrunchも使用しました。しばらく使っていませんでしたが、今では Apache の一部になっています。
別のオプションはStratosphereです。これは、 Scala 型を Stratosphere の内部データ型に変換するScala APIを提供します。
API は Scalding と非常に似ていますが、Stratosphere は高度なデータ フローをネイティブにサポートしています (したがって、MapReduce ジョブを連鎖させる必要はありません)。Scalding よりも Stratosphere を使用すると、はるかに優れたパフォーマンスが得られます。
Stratosphere は Hadoop MapReduce ではなくHadoop YARNで実行されるため、既存の YARN クラスターを使用できます。
これは Stratosphere での単語カウントの例です (Scala API を使用):
val input = TextFile(textInput)
val words = input.flatMap { line => line.split(" ") }
val counts = words
.groupBy { word => word }
.count()
val output = counts.write(wordsOutput, CsvOutputFormat())
val plan = new ScalaPlan(Seq(output))
私が調査する最初の 2 つはScalding ( Cascadingの上に構築されます) とScoobiです。どちらも使用したことはありませんが、特に Scalding は非常に優れた API を提供しているようです。