Я знаю, что Spark полностью интегрирован со Scala. Это вариант использования специально для больших наборов данных. Какие другие инструменты имеют хорошую поддержку Scala? Подходит ли Scala для больших наборов данных? Или это также подходит для небольших наборов данных?
scalability
scala
sheldonkreger
источник
источник
Ответы:
Re: размер данных
Краткий ответ
Scala работает как с небольшими, так и с большими данными, но ее создание и разработка мотивированы необходимостью чего-то масштабируемого. Scala - это сокращение от «Scalable Language» .
Длинный ответ
Scala - это функциональный язык программирования, который работает на jvm . «Функциональная» часть этого - фундаментальное различие в языке, которое заставляет вас по-разному думать о программировании. Если вам нравится такой способ мышления, он позволяет вам быстро работать с небольшими данными. Нравится вам это или нет, но функциональные языки принципиально легче масштабировать. Часть jvm также важна, потому что jvm в основном везде и, таким образом, код Scala может работать практически везде. (Обратите внимание, что на jvm написано множество других языков, а также множество других функциональных языков программирования , и языки помимо Scala появляются в обоих списках.)
Этот доклад дает хороший обзор мотивации Scala.
Re: другие инструменты, которые имеют хорошую поддержку Scala:
Как вы упомянули, Spark (распределенная пакетная обработка лучше в итеративных алгоритмах, чем его аналог) является большой. В состав Spark входят библиотеки Mllib для машинного обучения и GraphX для графиков. Как уже упоминали Эрик Аллик и Трис Нефзгер, Akka и Factorie существуют. Также есть Play .
Как правило, я не могу сказать, есть ли конкретный вариант использования, для которого вы ведете поиск (если это так, сделайте это частью вашего вопроса), или просто хотите провести обзор инструментов для работы с большими данными и случайно узнаете Scala и хотите начать там.
источник
ScalaNLP представляет собой набор библиотек машинного обучения и числовых вычислений с поддержкой общих задач обработки естественного языка. http://www.scalanlp.org/
Вот недавно обновленный список библиотек scala для науки о данных: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
источник
Благодаря прослушиванию презентаций Мартина Одерски, создателя Scala, он особенно хорошо подходит для построения систем с высокой степенью масштабируемости за счет использования функциональных конструкций программирования в сочетании с объектной ориентацией и гибким синтаксисом. Он также полезен для разработки небольших систем и быстрого прототипирования, поскольку требует меньше строк кода, чем некоторые другие языки, и имеет интерактивный режим для быстрой обратной связи. Одна известная платформа Scala - это Akka, которая использует модель акторов параллельных вычислений. Многие из презентаций Одерского находятся на YouTube, и на wiki.scala-lang.org есть список инструментов, реализованных с помощью Scala.
Неявным моментом является то, что инструменты и фреймворки, написанные на Scala, изначально имеют интеграцию с Scala и, как правило, Scala API. Затем могут быть добавлены другие API для поддержки других языков, начиная с Java, поскольку Scala уже интегрирована и фактически критически зависит от Java. Если инструмент или фреймворк не написаны на Scala, маловероятно, что он предлагает какую-либо поддержку Scala. Вот почему в ответ на ваш вопрос я указал на инструменты и платформы, написанные на Scala, и Spark - один из примеров. Тем не менее, Scala в настоящее время занимает незначительную долю рынка, но скорость ее принятия растет, и высокие темпы роста Spark будут способствовать этому. Причина, по которой я использую Scala, состоит в том, что API Spark для Scala более богат, чем API Java и Python.
Основные причины, по которым я предпочитаю Scala, в основном потому, что он гораздо более выразителен, чем Java, потому что он позволяет и облегчает использование функций в качестве объектов и значений, сохраняя объектно-ориентированную модульность, что позволяет разрабатывать сложные и правильные программы с гораздо меньшим количеством кода, чем Java, что Я предпочел из-за широкого использования, ясности и отличной документации.
источник
Scala подходит как для больших, так и для небольших приложений для обработки данных. Подумайте о DynaML, если вам интересно попробовать библиотеку машинного обучения, которая хорошо интегрируется с Apache Spark. Это все еще находится в зачаточном состоянии, так сказать, с точки зрения количества предлагаемых моделей, но он компенсирует это широким и гибким API машинного обучения.
Чтобы взглянуть на некоторые примеры использования, рассмотрим (подробнее, откуда это)
Отказ от ответственности: я автор DynaML
источник