Подтвердить что ты не робот

Какие опции для hadoop на scala

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

4b9b3361

Ответ 1

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

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

  • Scalding широко используется в производстве в Твиттере и был проверен в битве на наборах данных на базе Twitter.
  • В нем есть несколько активных участников как внутри, так и за пределами Twitter, которые стремятся сделать это замечательным.
  • Он совместим с вашими каскадными заданиями.
  • В дополнение к типизированному API он имеет API полей, который может быть более знаком пользователям R и фреймворкам данных.
  • Он обеспечивает надежную Матричную библиотеку.

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

Стратосфера не работает на Hadoop MapReduce, но на Hadoop YARN, так что вы можете используйте существующий кластер YARN.

Это пример подсчета слов в Стратосфере (с 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))