В какой ситуации я могу использовать Dask вместо Apache Spark? [закрыто]

81

В настоящее время я использую Pandas и Spark для анализа данных. Я обнаружил, что Dask предоставляет распараллеленный массив NumPy и Pandas DataFrame.

Pandas - это простой и интуитивно понятный инструмент для анализа данных в Python. Но мне трудно обрабатывать несколько больших фреймов данных в Pandas из-за ограниченной системной памяти.

Простой ответ:

Apache Spark - это комплексная среда, объединяющая распределенные вычисления, запросы SQL, машинное обучение и многое другое, работающая на JVM и обычно совместно развертываемая с другими средами больших данных, такими как Hadoop. ... Обычно Dask меньше и легче Spark.

Я узнаю ниже подробности из http://dask.pydata.org/en/latest/spark.html

  • Даск легкий
  • Dask обычно используется на одной машине, но также хорошо работает в распределенном кластере.
  • Dask предоставляет параллельные массивы, фреймы данных, машинное обучение и настраиваемые алгоритмы
  • У Dask есть преимущество для пользователей Python, потому что это сама библиотека Python, поэтому сериализация и отладка, когда что-то идет не так, происходит более плавно.
  • Даск отказывается от высокоуровневого понимания, чтобы позволить пользователям выражать более сложные параллельные алгоритмы.
  • Dask легче, и его легче интегрировать в существующий код и оборудование.
  • Если вам нужен единый проект, который делает все, и вы уже используете оборудование для работы с большими данными, Spark - беспроигрышный вариант.
  • Spark обычно используется в кластерах малого и среднего размера, но также хорошо работает на одной машине.

Я понимаю больше о Dask из приведенной ниже ссылки https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • Если вы сталкиваетесь с проблемами памяти, ограничениями хранилища или границами ЦП на одной машине при использовании Pandas, NumPy или других вычислений с Python, Dask может помочь вам масштабировать все ядра на одной машине или масштабировать на всех ядрах и памяти кластера.
  • Dask хорошо работает на одной машине, позволяя использовать все ядра вашего ноутбука и обрабатывать данные, превышающие объем памяти
  • гибко и эластично масштабируется на кластерах с сотнями узлов.
  • Dask изначально работает с Python с данными в различных форматах и ​​системах хранения, включая распределенную файловую систему Hadoop (HDFS) и Amazon S3. Anaconda и Dask могут работать с существующим корпоративным дистрибутивом Hadoop, включая Cloudera CDH и Hortonworks HDP.

http://dask.pydata.org/en/latest/dataframe-overview.html

Ограничения

Dask.DataFrame не реализует весь интерфейс Pandas. Ожидающие этого пользователи будут разочарованы. Примечательно, что dask.dataframe имеет следующие ограничения:

  1. Установка нового индекса из несортированного столбца стоит дорого
  2. Многие операции, такие как groupby-apply и join для несортированных столбцов, требуют установки индекса, что, как упоминалось выше, является дорогостоящим.
  3. API Pandas очень большой. Dask.dataframe не пытается реализовать многие функции pandas или любые более экзотические структуры данных, такие как NDFrames.

Спасибо разработчикам Dask. Вроде очень перспективная технология.

В целом я понимаю, что Dask проще в использовании, чем Spark. Dask такой же гибкий, как и Pandas, с большей мощностью для параллельных вычислений с большим количеством процессоров.

Я понимаю все вышеперечисленные факты о Даске.

Итак, какой примерно объем данных (в терабайтах) может быть обработан с помощью Dask?

Харипрасад
источник
Это очень широкий вопрос
MRocklin
1
Одного рассмотрения размера данных недостаточно для выбора лучших параллельных инструментов / стратегии. Необходимо учитывать то, как алгоритм обрабатывает данные. Я не пробовал оба, но, вероятно, попробую dask на одной машине, такой как ноутбук или компьютер. И рассмотрим возможность развертывания для искры, когда возникнет необходимость работать с многоузловым кластером. Поскольку очень сложно изучить и настроить каждый компонент с помощью фреймворка, поставляемого с Spark.
ReneWang 02
Вы можете найти ответ здесь: medium.com/datadriveninvestor/…
tom

Ответы:

40

вы можете прочитать сравнение Dask с Apache Spark

Apache Spark - это комплексная среда, объединяющая распределенные вычисления, запросы SQL, машинное обучение и многое другое, работающая на JVM и обычно совместно развертываемая с другими средами больших данных, такими как Hadoop. Первоначально он был оптимизирован для массового приема данных и запросов, распространенных в инженерии данных и бизнес-аналитике, но с тех пор расширился. Spark обычно используется в кластерах малого и среднего размера, но также хорошо работает на одной машине.

Dask - это библиотека параллельного программирования, которая в сочетании с экосистемой Numeric Python предоставляет параллельные массивы, фреймы данных, машинное обучение и пользовательские алгоритмы. Он основан на Python и базовом стеке C / Fortran. Первоначально Dask был разработан для дополнения других библиотек параллелизмом, особенно для числовых вычислений и расширенной аналитики, но с тех пор расширился. Dask обычно используется на одной машине, но также хорошо работает в распределенном кластере.

Обычно Dask меньше и легче Spark. Это означает, что он имеет меньше функций и вместо этого предназначен для использования в сочетании с другими библиотеками, особенно в числовой экосистеме Python.

MaxU
источник