Вопрос

Я прочитал в этом посте Подходит ли язык R для больших данных Эти большие данные составляют 5TB, и хотя это хорошо предоставляет информацию о возможности работы с данными этого типа в R он предоставляет очень мало информации о Python. Анкет Мне было интересно, если Python может работать с таким большим количеством данных.

Это было полезно?

Решение

Чтобы уточнить, я чувствую, что оригинальные ссылки на OP, вероятно, не лучше для такого типа формата, но я обязательно буду представлять python в этом конкретном случае.

Позвольте мне начать с того, чтобы сказать это независимо от размера ваших данных, python Не должен быть вашим ограничивающим фактором. На самом деле, есть только пара основных проблем, с которыми вы столкнетесь с большими наборами данных:

  • Чтение данных в память - Это, безусловно, самая распространенная проблема, с которой сталкиваются в мире больших данных. По сути, вы не можете читать в большем количестве данных, чем у вас есть память (ОЗУ). Лучший способ исправить это - сделать атомные операции на ваших данных вместо того, чтобы пытаться прочитать все сразу.
  • Хранение данных - на самом деле это просто еще одна форма предыдущей проблемы, к тому времени, чтобы добраться до 1TB, Вы начинаете искать в другом месте для хранения. AWS S3 является наиболее распространенным ресурсом, и python есть фантастика boto Библиотека, чтобы облегчить лидировать с большими кусками данных.
  • Задержка сети - Перемещение данных между различными службами станет вашим узким местом. Вы не можете сделать огромную сумму, чтобы исправить это, кроме как попытаться выбрать совместные ресурсы и подключить к стене.

Другие советы

Есть пара вещей, которые вам нужно понять при работе с большими данными -

Что такое большие данные?

Вы можете знать о знаменитых V с большими данными - объемом, скоростью, разнообразием ... так что Python может не подходить для всех. И это идет со всеми доступными инструментами по науке о данных. Вы должны знать, какой инструмент хорош для какой цели.

Если дело с большим объемом данных:

  • Свинья/уляя/акула - очистка данных и работы ETL
  • Hadoop/Spark - распределенные параллельные вычисления
  • Mahout/Ml -Lib - машинное обучение

Теперь вы можете использовать R/Python на промежуточных этапах, но вы поймете, что они становятся узким местом во всем вашем процессе.

Если дело со скоростью данных:

  • Кафка/Шторм - система высокой пропускной способности

Люди пытаются R/Python здесь, но опять же, это зависит от своего рода параллелизма, которую вы хотите, и вашей модели сложности.

Какой анализ вы хотите сделать?

Если ваша модель требует, чтобы все данные были сначала внесены в память, ваша модель не должна быть сложной, потому что, если промежуточные данные велики, то код сломается. И если вы думаете о написании его на диск, то вы столкнетесь с дополнительной задержкой, потому что чтение/запись диска медленно по сравнению с RAM.

Вывод

Вы определенно можете использовать Python в пространстве больших данных (определенно, так как люди пытаются с R, почему не Python), но сначала знаете свои данные и бизнес -требования. Там могут быть лучшие инструменты, доступные для того же самого и всегда помните:

Ваши инструменты не должны определять, как вы отвечаете на вопросы. Ваши вопросы должны определить, какие инструменты вы используете.

У Python есть очень хорошие инструменты для работы с большими данными:

Numpy

Массивы Numpy Memmory, нанесенные на картинку, позволяют вам получить доступ к файлу, сохраненному на диске, как если бы это был массив. Только части массива, с которыми вы активно работаете, должны быть загружены в память. Его можно использовать почти так же, как обычный массив.

H5PY и Pytables

Эти две библиотеки предоставляют доступ к файлам HDF5. Эти файлы позволяют доступ только к части данных. Кроме того, благодаря базовым библиотекам, используемым для доступа к данным, многие математические операции и другие манипуляции с данными могут быть выполнены без загрузки их в структуру данных Python. Массовые, высоко структурированные файлы возможны, намного больше, чем 5 ТБ. Это также обеспечивает бесшовное, без потерь сжатие.

базы данных

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

Панды

Это позволяет доступ к более высоким уровням к различным типам данных, включая данные HDF5, файлы CSV, базы данных и даже веб-сайты. Для больших данных он предоставляет обертки вокруг доступа к файлам HDF5, что облегчает анализ больших наборов данных.

mpi4py

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

даск

Он предоставляет версию обычного массива Numpy, которая поддерживает многие обычные операции Numpy многоядом, который может работать на данных, слишком большие, чтобы вписаться в память.

пламя

Инструмент, специально разработанный для больших данных. Это в основном обертка вокруг вышеуказанных библиотек, обеспечивающих постоянные интерфейсы различным методам хранения больших объемов данных (таких как HDF5 или базы данных) и инструментами, чтобы облегчить манипулирование, математические операции и анализировать данные, которые слишком большой, чтобы вписаться в память.

Абсолютно. Когда вы работаете с данными в таком масштабе, это часто использует систему больших данных, и в этом случае Python или любом языке, который вы используете, является лишь интерфейсом. Смотрите, например Руководство по программированию Python's Python. Анкет Какие данные у вас есть и что вы хотите с этим делать?

Для обработки такого количества данных язык программирования не является основной проблемой, но структура программирования. Такие рамки, как MapReduce или Spark, имеют привязки ко многим языкам, включая Python. Эти структуры, безусловно, имеют много готовых к использованию пакетов для задач анализа данных. Но, в конце концов, все это касается вашего требования, то есть какова ваша задача? Люди имеют разные определения задач анализа данных, некоторые из них могут быть легко решены с помощью реляционных баз данных. В этом случае SQL намного лучше, чем все другие альтернативы.

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

  • Насколько велики данные
  • Какую обработку вы собираетесь выполнить на нем
  • Какое оборудование вы собираетесь использовать
  • Которые являются конкретными библиотеками, которые вы планируете использовать

В любом случае, Python хорошо принят в сообществах науки о данных.

Я использовал Anaconda Python 3.4 и Pandas для поиска в базе данных 10M строк, чтобы соответствовать 20K учетных данных для входа. Занимает около минуты. Внутренние пандами отлично используют память. Тем не менее, поистине большие данные требуют обработки архитектуры, соответствующей проблеме. Pandas - это просто клей (логика) в этом уравнении, и другие инструменты также могут сделать это. R, Scala, Haskell, SAS и т. Д. могут повторить часть логики - возможно, достаточно, чтобы быстрее отвечать на вопросы. Но Python делает хороший (лучший?) Инструмент общего назначения. Вы можете запустить код R в Python, а также большинство других языков. Несмотря на то, что интерпретируют, существуют высокопроизводительные методы и инструменты, такие как PYPY, которые могут заставить Python работать почти так же быстро, как контрольные инструменты с лишь немного большим усилием. И у Python есть много библиотек, которые делают почти все - см. Выше список.

Если вы спрашиваете, следует ли вам учиться и использовать Python, мой ответ - да, статьи указывают на то, что Python используется больше, чем R среди людей, которые используют оба. Но несколько проблем с данными решаются одним инструментом. Это может стать вашим инструментом, но это только это - инструмент. И точно так же, как ни один здравомыслящий человек строит дом с молотком, ни один ученый для данных в здравом состоянии не использует только один инструмент.

Забавно, как люди смешивают большие данные с наукой данных и бизнес -аналицией.

Во -первых, большие данные означают «много данных», так много информации, что она не вписывается в обычную базу данных. Тем не менее, иногда большие данные даже не являются правильными «значениями», а документы, изображения и так далее.

Итак, чтобы обработать большие данные, нам нужна скорость. Python выходит из лиги, поэтому R. Однако, если задача так же просто, как взять CSV, и вставить в базу данных, то это ETL, нам не нужно программирование, чтобы сделать это.

И когда информация уменьшается, мы могли бы применить Python, R или что -то, что вы хотите. Даже Excel. Однако на этом этапе большие данные больше не большие, а обычные данные.

ИМХО, Java более подходит для больших данных (для всей цепочки), но люди принимают Python по умолчанию по какой -то непрактичной причине.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top