Scala vs. Python для Apache Spark

0
114
views

Apache Spark – это отличный выбор для кластерных вычислений, который включает языковые API для Scala, Java, Python и R. Apache Spark включает библиотеки для SQL, потоковой передачи, машинного обучения и графической обработки, — пишет KV.BY.

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

Первое, что нужно решить, это где вы будете его запускать. Для большинства данное решение не составляет никаких сложностей – запускайте его с использованием Apache Hadoop YARN. После этого несложного решения перед разработчиками встает вопрос, какой язык выбрать для работы с Apache Spark. Если при этом каждому разработчику нужна возможность выбирать свой собственный язык или если нужно поддерживать несколько языков, то это выльется в разрастание кода и инструментов. А интерфейс R недостаточно богат для этого. Для большинства компаний очевидно, что у Java слишком избыточный код и непростой интерфейс. Исходя из этого их выбор падает на Python или Scala. Поэтому давайте подробно разберем оба этих языка и решим, какой из них подходит лучше.

У Scala есть ключевое преимущество: именно на этом языке работает платформа Apache Spark. Scala, работающий на JVM, столь же мощный, как и Java. Однако код на Scala все же выглядит более аккуратно. Благодаря JVM, приложение, написанное на этом языке, может «вырасти» до впечатляющих размеров. Для большинства приложений это является крайне важным, однако Apache Spark работает с Akka и YARN, поэтому для него это не является необходимостью. Вы просто задаете несколько параметров, и ваше Apache Spark приложение будет распределенным вне зависимости от языка, с которым вы работаете. Поэтому данное преимущество вряд ли можно считать значительным плюсом в такой ситуации.

Python является одним из ключевых языков в мире Spark-приложений. Этот язык также крайне легко изучить – многие школы даже обучают ему детей. Существует огромное количество примеров кода, книг, статей, библиотек и документации, что позволяет без сложностей вникнуть в Python.

PySpark – это стандартный инструмент для работы со Spark. А поскольку Apache Zeppelin активно поддерживает PySpark, а также Jupyter и IBM DSX используют Python как основной язык, у вас есть много инструментов, которые можно использовать, чтобы разрабатывать и тестировать код, посылать запросы и визуализировать данные. Знание Python становится необходимостью для специалистов по данным, инженеров по данным (Data Engineers) и разработчиков приложений, которые используют потоковую передачу данных. Python отлично интегрируется с Apache NiFi.

Ключевым преимуществом Python является наличие множества библиотек по машинному обучению, обработке данных на естественном языке и глубокому обучению. Вам также не нужно компилировать код и волноваться по поводу сложной JVM-упаковки. Как правило, используется Anaconda или Pip, а Apache Hadoop- и Apache Spark-кластеры уже включают Python, и их библиотеки уже установлены (как пример, Apache Ambari).

Для Python существует широкий выбор отличных библиотек: NLTK, TensorFlow, Apache MXNet, TextBlob, SpaCY и Numpy.

Достоинства Python

  • PySpark приведен во многих примерах и руководствах.
  • Большинство библиотек выходят, в первую очередь, с Python APIs.
  • Python – зрелый язык.
  • Python широко используется, и его популярность продолжает расти.
  • Библиотеки глубокого обучения включают Python.
  • Легок в использовании.

Недостатки Python

  • Иногда нужно использовать Python 2, иногда – Python 3.
  • Не такой быстрый, как Scala (однако Cython исправляет это).
  • Некоторые библиотеки сложны для сборки.

Достоинства Scala

  • JVM.
  • Полнофункциональные IDEs и модульное тестирование.
  • Отличные форматы сериализации.
  • Может использовать Java-библиотеки.
  • Быстрый.
  • AKKA.
  • Spark Shell.
  • Расширенные возможности потоковой передачи данных

Недостатки Scala

  • Не так широко распространен.
  • Меньшая база знаний.
  • Многие Java-разработчики не готовы переходить на него.
  • Должен быть скомпилирован для работы с Apache Spark.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here