Чи підходить Python для великих даних


14

Я читаю в цьому дописі, чи підходить мова R для Big Data, яка становить великі дані 5TB, і хоча це добре допомагає надавати інформацію про доцільність роботи з даними такого типу, в Rній надається дуже мало інформації Python. Мені було цікаво, чи Pythonможна працювати і з такою кількістю даних.

Відповіді:


18

Для уточнення, мені здається, що оригінальні посилання питань на OP, ймовірно, не найкращі для формату типу SO, але я, безумовно, представляю саме pythonв цьому випадку.

Дозвольте почати з того, що незалежно від розміру ваших даних pythonце не повинно бути вашим обмежуючим фактором. Насправді є лише кілька основних проблем, з якими ви збираєтеся стикатися з великими наборами даних:

  • Читання даних у пам'яті - це, безумовно, найпоширеніша проблема, з якою стикаються у світі великі дані. В основному, ви не можете прочитати більше даних, ніж у вас є пам'ять (RAM). Найкращий спосіб виправити це - зробити атомні операції над вашими даними, а не намагатися прочитати все одразу.
  • Зберігання даних - це насправді лише чергова форма попереднього випуску, до того часу 1TB, коли потрібно починати, вам потрібно шукати місця для зберігання. AWS S3 - це найпоширеніший ресурс і pythonмає фантастичну botoбібліотеку для полегшення ведення великих фрагментів даних.
  • Затримка в мережі - переміщення даних між різними службами стане вашим вузьким місцем. Ви не можете зробити це, щоб виправити це, окрім того, щоб спробувати забрати спільно розташовані ресурси та підключити до стіни.

13

Є кілька речей, які ви повинні зрозуміти, коли маєте справу з великими даними -

Що таке великі дані?

Можливо, ви знаєте про знамениті V великі дані - Гучність, Швидкість, Різноманітність ... Отже, Python може підійти не для всіх. І це стосується всіх наявних інструментів для вивчення даних. Потрібно знати, який інструмент хороший з якою метою.

Якщо мова йде про великий обсяг даних:

  • Свиня / Вулик / Акула - очищення даних та робота з ETL
  • Hadoop / Spark - розподілені паралельні обчислення
  • Mahout / ML-Lib - машинне навчання

Тепер ви можете використовувати R / Python на проміжних стадіях, але ви зрозумієте, що вони стають вузьким місцем у вашому процесі.

Якщо ви маєте справу зі швидкістю даних:

  • Kafka / Storm - система високої пропускної здатності

Тут люди намагаються R / Python, але це знову залежить від типу паралелізму та вашої складності моделі.

Який аналіз Ви хочете зробити?

Якщо ваша модель вимагає спочатку всіх даних ввести в пам'ять, то ваша модель не повинна бути складною, оскільки якщо проміжні дані великі, код порушиться. І якщо ви думаєте записати його на диск, то у вас виникне додаткова затримка, оскільки читання / запис диска повільне порівняно з оперативною пам'яттю.

Висновок

Ви можете безперечно використовувати Python у просторі даних Big (Очевидно, оскільки люди намагаються використовувати R, чому б не Python), але спочатку знаєте ваші дані та вимоги бізнесу. Можливо, є кращі інструменти, доступні для того ж, і завжди пам’ятайте:

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


8

У Python є кілька дуже хороших інструментів для роботи з великими даними:

онімілий

Пам’ятні масиви Numpy, відображені на карті, дозволяють отримати доступ до файлу, збереженого на диску, як би це масив. У пам'ять потрібно завантажувати лише ті частини масиву, з якими активно працюєте. Його можна використовувати майже так само, як і звичайний масив.

h5py та pytables

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

бази даних

Існують різні типи баз даних, які дозволяють зберігати великі набори даних та завантажувати лише потрібні вам частини. Багато баз даних дозволяють вам робити маніпуляції, не завантажуючи даних взагалі в структуру даних python.

панди

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

mpi4py

Це інструмент для запуску вашого python-коду розподіленим способом по декількох процесорам або навіть на декількох комп'ютерах. Це дозволяє одночасно працювати над частинами даних.

дак

Він надає версію звичайного масиву numpy, який підтримує безліч звичайних операцій numpy в багатоядерному режимі, які можуть працювати надто великими даними, щоб вміститись у пам'яті.

спалахнути

Інструмент, спеціально розроблений для великих даних. Це в основному обгортка навколо вищезазначених бібліотек, що забезпечує послідовні інтерфейси для різних методів зберігання великої кількості даних (таких як HDF5 або бази даних) та інструментів, щоб полегшити маніпулювання, виконувати математичні операції та аналізувати дані, які занадто великий, щоб вписатися в пам'ять.


4

Абсолютно. Коли ви працюєте з даними в такому масштабі, звичайно використовувати великі рамки даних, в цьому випадку python або будь-яка мова, якою ви користуєтесь, - це лише інтерфейс. Дивіться, наприклад , Посібник з програмування Python Spark . Які дані у вас є і що ви хочете зробити з ними?


3

Для обробки такої кількості даних мова програмування не є головним питанням, але є програмою. Такі рамки, як MapReduce або Spark, прив'язуються до багатьох мов, включаючи Python. Ці рамки, безумовно, мають багато готових до використання пакетів для завдань аналізу даних. Але врешті-решт все виходить за вашою вимогою, тобто яке ваше завдання? Люди мають різні визначення завдань аналізу даних, деякі з них можна легко вирішити за допомогою реляційних баз даних. У цьому випадку SQL набагато кращий за всі інші альтернативи.


2

Я вважаю, що мова сама по собі має мало спільного з можливостями продуктивності, коли мова йде про великі дані. Що важливо, це:

  • Наскільки насправді є дані
  • Яку обробку ви збираєтеся виконати на ній
  • Яке обладнання ви збираєтеся використовувати
  • Які конкретні бібліотеки ви плануєте використовувати

У будь-якому випадку, Python добре прийнятий у спільнотах з науковими даними.


2

Я використовував Anaconda Python 3.4 та Pandas для пошуку в базі даних 10M рядків, щоб відповідати 20K облікових даних для входу. Займає близько хвилини. Внутрішні панди використовують велику пам'ять. Однак, для великих даних потрібна архітектура обробки, відповідна проблемі. Панда - це лише клей (логіка) у цьому рівнянні, і інші інструменти також можуть це зробити. R, Scala, Haskell, SAS тощо можуть повторити певну логіку - можливо, достатньо просто, щоб швидше відповісти на питання. Але пітон робить хороший (найкращий?) Інструмент загального призначення. Ви можете запустити R-код на python, а також на більшості інших мов. Незважаючи на інтерпретацію, існують високопродуктивні методи та інструменти, такі як pypy, які можуть змусити пітон працювати так само швидко, як інструменти орієнтиру, лише трохи більше зусиль. У python є багато бібліотек, які роблять практично все - дивіться вище в списку.

Якщо ви запитуєте, чи варто вам вивчати і використовувати python, моя відповідь - так Статті вказують, що python використовується більше, ніж R серед людей, які використовують обидва. Але мало проблем із науковими даними вирішується одним інструментом. Він може стати вашим інструментом переходу, але єдине, що це - інструмент. І так само, як жоден розумний чоловік не будує будинок за допомогою молотка, ні один здоровий Data Scientist не використовує лише один інструмент.


0

Смішно, як люди змішують великі дані з наукою про дані та бізнес-аналітикою.

По-перше, великі дані означають "багато даних", стільки інформації, що вона не вміщується у звичайній базі даних. Однак іноді великі дані - це навіть не належна «ціннісна» інформація, а документи, зображення тощо.

Отже, для обробки великих даних МИ ПОДОБАЄМО ШВИДКУВАТИ. Python поза лігою, тому Р. Однак, якщо завдання настільки просто, як взяти CSV і вставити в базу даних, то це ETL, для цього нам не потрібно програмування.

А коли інформація зменшиться, ми можемо застосувати python, r або все, що вам потрібно. Навіть Excel. Однак на цьому етапі Big Data вже не великий, а звичайні дані.

IMHO, Java більше підходить для великих даних (для всього ланцюга), але люди приймають Python за замовчуванням з якихось непрактичних причин.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.