Инструменты Data Science с использованием Scala

15

Я знаю, что Spark полностью интегрирован со Scala. Это вариант использования специально для больших наборов данных. Какие другие инструменты имеют хорошую поддержку Scala? Подходит ли Scala для больших наборов данных? Или это также подходит для небольших наборов данных?

sheldonkreger
источник
2
Вы также хотите узнать о наборах инструментов для машинного обучения, таких как, например, FACTORIE?
Эрик Каплун
Это имеет отношение к моему вопросу, не стесняйтесь поделиться больше.
Шелдонкрегер

Ответы:

11

Re: размер данных

Краткий ответ

Scala работает как с небольшими, так и с большими данными, но ее создание и разработка мотивированы необходимостью чего-то масштабируемого. Scala - это сокращение от «Scalable Language» .

Длинный ответ

Scala - это функциональный язык программирования, который работает на jvm . «Функциональная» часть этого - фундаментальное различие в языке, которое заставляет вас по-разному думать о программировании. Если вам нравится такой способ мышления, он позволяет вам быстро работать с небольшими данными. Нравится вам это или нет, но функциональные языки принципиально легче масштабировать. Часть jvm также важна, потому что jvm в основном везде и, таким образом, код Scala может работать практически везде. (Обратите внимание, что на jvm написано множество других языков, а также множество других функциональных языков программирования , и языки помимо Scala появляются в обоих списках.)

Этот доклад дает хороший обзор мотивации Scala.

Re: другие инструменты, которые имеют хорошую поддержку Scala:

Как вы упомянули, Spark (распределенная пакетная обработка лучше в итеративных алгоритмах, чем его аналог) является большой. В состав Spark входят библиотеки Mllib для машинного обучения и GraphX для графиков. Как уже упоминали Эрик Аллик и Трис Нефзгер, Akka и Factorie существуют. Также есть Play .

Как правило, я не могу сказать, есть ли конкретный вариант использования, для которого вы ведете поиск (если это так, сделайте это частью вашего вопроса), или просто хотите провести обзор инструментов для работы с большими данными и случайно узнаете Scala и хотите начать там.

TheGrimmScientist
источник
5

ScalaNLP представляет собой набор библиотек машинного обучения и числовых вычислений с поддержкой общих задач обработки естественного языка. http://www.scalanlp.org/

Вот недавно обновленный список библиотек scala для науки о данных: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1

Брэндон Лудермилк
источник
4

Благодаря прослушиванию презентаций Мартина Одерски, создателя 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, что Я предпочел из-за широкого использования, ясности и отличной документации.

Трис Нефцгер
источник
1
Это отличная информация о Scala в целом, но я ищу информацию о конкретных инструментах и ​​средах для обработки данных, которые имеют интеграцию с Scala, и почему Scala является хорошим языком для использования этих инструментов.
Шелдонкрегер
0

Scala подходит как для больших, так и для небольших приложений для обработки данных. Подумайте о DynaML, если вам интересно попробовать библиотеку машинного обучения, которая хорошо интегрируется с Apache Spark. Это все еще находится в зачаточном состоянии, так сказать, с точки зрения количества предлагаемых моделей, но он компенсирует это широким и гибким API машинного обучения.

Чтобы взглянуть на некоторые примеры использования, рассмотрим (подробнее, откуда это)

  1. Идентификация системы - Abott Power Plant

Отказ от ответственности: я автор DynaML

Мандар Чандоркар
источник
Если это ваш проект, обратите внимание на вашу принадлежность.
Шон Оуэн