каковы варианты hadoop на scala

мы начинаем аналитический проект на основе больших данных, и мы рассматриваем возможность принятия scala (Typesafe stack). Я хотел бы знать различные API/проекты scala, которые доступны для программ Hadoop, map reduce.

5 ответов


обязательно проверить ошпаривать. Говорю как пользователь и случайный участник, я нашел его очень полезным инструментом. API ошпаривания также должен быть очень совместим со стандартным API коллекций Scala. Точно так же, как вы можете вызвать flatMap, map или groupBy в обычных коллекциях, вы можете сделать то же самое на ошпаривающих трубах, которые вы можете представить как распределенный список кортежей. Существует также типизированная версия API, которая обеспечивает более сильные гарантии безопасности типов. Я не используется Scoobi, но API кажется похожим на то, что у них есть.

кроме того, есть несколько других преимуществ:

  • ошпаривание широко используется в производстве в Twitter и было протестировано на наборах данных Twitter.
  • он имеет несколько активных участников как внутри, так и за пределами Twitter, которые стремятся сделать его отличным.
  • он совместим с вашими существующими каскадными заданиями.
  • в дополнение к типизированному API, он имеет API полей, который может быть более знаком пользователям R и фреймворков данных.
  • он обеспечивает надежную Матрица Библиотека.

У меня был успех с Scoobi. Он прост в использовании, строго типизирован, скрывает большую часть беспорядка Hadoop (делая что-то вроде автоматической сериализации ваших объектов для вас) и полностью Scala. Одна из вещей, которые мне нравятся в его API, заключается в том, что дизайнеры хотели, чтобы коллекции Scoobi чувствовали себя так же, как стандартные коллекции Scala, поэтому вы фактически используете их так же, за исключением того, что операции выполняются на Hadoop, а не локально. Это действительно делает его довольно легко переключаться между коллекциями Scoobi и коллекциями Scala во время разработки и тестирования.

Я также использовал хруст, который построен поверх Java-основанного хруста. Я не использовал его некоторое время, но теперь он является частью Apache.


Twitter инвестирует много усилий в ошпаривание, включая хорошую библиотеку матриц, которая может быть использована для различных задач машинного обучения. Мне нужно дать Scoobi попробовать тоже.

для полноты, если вы не женаты на MapReduce, посмотрите на Искра. Он работает намного лучше во многих сценариях, в том числе в их Порту Hive to Spark, соответствующим образом называемом акула. Как частый пользователь улья, я в восторге от этого.


первые два, которые я бы, вероятно, исследовать ошпаривать (который строится поверх каскадные) и Scoobi. Я тоже не использовал, хотя, Но ошпаривание, в частности, похоже, что он обеспечивает действительно хороший API.


другой вариант:стратосферы, предлагает Scala API который преобразует типы Scala во внутренние типы данных Stratosphere.

API очень похож на ошпаривание, но Stratosphere изначально поддерживает расширенные потоки данных (поэтому вам не нужно связывать задания MapReduce). Вы будете иметь гораздо лучшую производительность со стратосферой, чем с ошпариванием.

Стратосфера работает не на Hadoop MapReduce, а на пряжа Hadoop, так ты можешь!--12-->используйте существующий кластер пряжи.

Это пример подсчета слов в Stratosphere (с API Scala):

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))