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


48

R має багато бібліотек, які спрямовані на аналіз даних (наприклад, JAGS, BUGS, ARULES тощо), і згадується в популярних підручниках, таких як: J.Krusche, Doing Bayesian Analysis Data; Б.Ланц, «Машинне навчання з R».

Я бачив керівництво в 5 ТБ для набору даних, який слід розглядати як великі дані.

Моє запитання: чи R підходить для тієї кількості даних, яка зазвичай спостерігається в проблемах з великими даними? Чи існують стратегії, які слід використовувати при використанні R з таким розміром набору даних?


4
Окрім наведених нижче відповідей, добре пам’ятати - це той факт, що більшість речей, які вам потрібні для R щодо Big Data, можна виконати за допомогою підсумкових наборів даних, які є дуже маленькими порівняно з необробленими журналами. Вибірка з сировинного журналу також забезпечує безпроблемний спосіб використання R для аналізу без головного болю при розборі ліній та рядків необробленого журналу. Наприклад, для звичайного завдання моделювання на роботі я регулярно використовую зменшення карт, щоб узагальнити 32 Гб необроблених журналів до 28 Мб даних користувачів для моделювання.
cwharland

Відповіді:


40

Власне, це і є навколо. У книзі R в горішці є навіть розділ про використання R з Hadoop для обробки великих даних. Існує кілька завдань, які необхідно виконати, оскільки R робить усе, що це працює в пам'яті, тому ви в основному обмежені кількістю доступної вам оперативної пам’яті.

Зрілим проектом для R та Hadoop є RHadoop

RHadoop був поділений на кілька підпроектів, rhdfs, rhbase, rmr2, plyrmr та швидке перевірка ( wiki ).


Але чи використовує R з Hadoop подолання цього обмеження (робити обчислення в пам'яті)?
Феліпе Альмейда

RHadoop дійсно долає це обмеження. Підручник тут: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… чітко це викладає. Вам потрібно переключитися на карту ментального мислення, але це забезпечує силу R для середовища hadoop.
Стів Каллестад

2
Дві нові альтернативи, які варто згадати, це: SparkR databricks.com/blog/2015/06/09/… та h2o.ai h2o.ai/product, які добре підходять для великих даних.
воск

30

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

  • Пакет RODBC: Дозволяє підключатися до зовнішньої БД з R для отримання та обробки даних. Таким чином, дані, маніпулюють обмежується оперативної пам'яті. Загальний набір даних може значно збільшити.
  • Пакет ff дозволяє використовувати більші набори даних, ніж RAM, використовуючи сторінки, відображені в пам'яті.
  • BigLM: Він будує узагальнені лінійні моделі на великих даних. Він завантажує дані в пам’ять.
  • bigmemory: пакет R, який дозволяє здійснювати потужний та ефективний в пам'яті паралельний аналіз та обмін даними масивних наборів даних. Це дозволяє зберігати великі об'єкти (матриці тощо) у пам'яті (в оперативній пам'яті), використовуючи зовнішні об’єкти вказівника для посилання на них.

1
Ще один пакет розподіленийR, який дозволяє працювати з розподіленими файлами в оперативній пам'яті.
adesantos

17

Тут є кілька хороших відповідей. Я хотів би долучитися до дискусії, додавши наступні три нотатки :

  1. Наголос питання на обсязі даних , посилаючись на Big Data , безумовно, зрозумілий і справедливий, особливо з огляду на проблему зростання обсягу даних, що випереджає експоненціальне зростання технологічних потужностей за законом Мура ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Сказавши це, важливо пам’ятати про інші аспекти концепції великих даних. Виходячи з визначення Gartner (моє наголос - AB): " Великі дані - це великий об'єм , висока швидкість та / або інформаційні ресурси високої різноманітності, що потребують нових форм обробки, щоб забезпечити розширене прийняття рішень, виявлення розуміння та оптимізацію процесів". (зазвичай її називають « моделлю 3В »). Я згадую про це, оскільки він змушує науковців даних та інших аналітиків шукати та використовувати R-пакети, які зосереджуються на інших, ніж об'ємних аспектах великих даних (за рахунок багатства величезної R-екосистеми ).

  3. Хоча в існуючих відповідях згадуються деякі пакети R, пов’язані з великими даними, для більш повного висвітлення я рекомендую звернутися до перегляду завдань CRAN "Високопродуктивні та паралельні обчислення з R" ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), зокрема, розділи «Паралельні обчислення: Hadoop» та «Велика пам’ять та дані, що знаходяться поза пам’яттю» .


12

R відмінно підходить для "великих даних"! Однак вам потрібен робочий процес, оскільки R обмежений (з деяким спрощенням) кількістю оперативної пам’яті в операційній системі. Я використовую такий підхід - взаємодія з реляційною базою даних (див. RSQLiteПакет для створення та взаємодії з базою даних SQLite), запуск запитів у стилі SQL, щоб зрозуміти структуру даних, а потім витягти окремі підмножини даних для обчислювально-інтенсивного Статистичний аналіз.

Однак це лише один підхід: є пакети, які дозволяють взаємодіяти з іншими базами даних (наприклад, Monet) або виконувати аналізи в R з меншими обмеженнями пам’яті (наприклад, див. pbdR).


9

Розглядаючи інші критерії, я думаю, що в деяких випадках використання Python може бути набагато перевершує R для великих даних. Я знаю широко розповсюджене використання R в навчальних матеріалах з наукових даних і в хороших бібліотеках для аналізу даних, наявних у ньому, але іноді це просто залежить від команди.

З мого досвіду, для людей, які вже знайомі з програмуванням, використання Python забезпечує набагато більшу гнучкість та підвищення продуктивності порівняно з мовою на зразок R, яка не є настільки продуманою та потужною порівняно з Python з точки зору мови програмування. Як доказ, в курсі обміну даними в моєму університеті найкращий заключний проект був написаний на Python, хоча інші мають доступ до багатої бібліотеки аналізу даних R. Тобто, іноді загальна продуктивність (враховуючи навчальні матеріали, документацію тощо) для Python може бути кращою за R навіть за відсутності спеціальних бібліотек аналізу даних для Python. Крім того, є кілька хороших статей, що пояснюють швидкий темп роботи Python в науці даних: Python Displacing R та Rich Science Data Structures in Python які незабаром можуть заповнити прогалину доступних бібліотек для Р.

Ще однією важливою причиною невикористання R є те, що в роботі з проблемами Big Data в реальному світі, всупереч проблемам, що стосуються лише академічних наук, є велика потреба в інших інструментах і методах, таких як аналіз даних, очищення, візуалізація, веб-переробка даних та багато інших, які набагато простіше використовувати мову програмування загального призначення. Це може бути причиною того, що мовою за замовчуванням, що використовується у багатьох курсах Hadoop (включаючи онлайн-курс Udacity ), є Python.

Редагувати:

Нещодавно DARPA також інвестувала 3 мільйони доларів, щоб допомогти фінансувати обробку та візуалізацію даних Python для роботи з великими даними, що, очевидно, є ознакою майбутнього Python в Big Data. ( деталі )


3
R приємно працювати з маніпулюванням даними ( reshape2, plyrі зараз dplyr), і я не думаю, що ти можеш зробити краще, ніж ggplot2/ ggvisдля візуалізації
органічна агава

@pearpies Як було сказано на початку своєї відповіді, я визнаю хороші бібліотеки, доступні для R, але в цілому, розглядаючи всі сфери, необхідні для великих даних (про що я, як сказав декілька з них у відповіді), R - це ні підходить для зрілих та величезних бібліотек, доступних для Python.
Амір Алі Акбарі


5
Ця відповідь здається цілком анекдотичною і навряд чи показує де-небудь, де R слабкий відносно Python.
stanekam

О Боже! "Як доказ, в курсі обміну даними в моєму університеті найкращий фінальний проект був написаний на Python, хоча інші мають доступ до багатої бібліотеки аналізу даних R". І ви хочете, щоб читачі поважали ваш аналіз? Ого. Чи можуть бути якісь інші фактори, які беруть участь у найкращому проекті - проект пітон, окрім мови, на якій він написаний? справді ....
Шон Механ

7

R відмінно підходить для безлічі аналізів. Як вже згадувалося, існують новіші адаптації для великих даних, такі як MapR, RHadoop та масштабовані версії RStudio.

Однак, якщо вас турбують бібліотеки, слідкуйте за Spark. Іскра була створена для великих даних і набагато швидша, ніж Hadoop. У ньому постійно зростає машинне навчання, SQL, потокова та графічна бібліотеки. Таким чином, дозволяючи багато, якщо не весь аналіз робити в рамках (з декількома мовними API, я віддаю перевагу Scala), без необхідності переміщуватися між мовами / інструментами.


4

Як зазначалося в інших відповідях, R можна використовувати разом з Hadoop та іншими розподіленими обчислювальними платформами для масштабування його до рівня "Big Data". Однак, якщо ви не спеціально пов'язані з R, але готові використовувати середовище "схоже на R", Incanter - це проект, який може працювати вам добре, оскільки він є рідним для JVM (заснований на Clojure) і не відповідає не матимуть "невідповідності імпедансу" між собою та Хадопом, що має R. Тобто, з Incanter, ви можете посилатись на Java-API API Hadoop / HDFS, не проходячи через міст JNI чи що-небудь інше.


2

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


0

Я думаю, що насправді плектор інструментів для роботи з великими даними у R. sparklyr буде чудовим гравцем у цій галузі. sparklyr - це R-інтерфейс до Apache Spark і дозволяє з'єднуватися з локальними та віддаленими кластерами, забезпечуючи зворотний зв'язок dplyr. Можна також покластися на бібліотеки машинного навчання Apache Spark. Крім того, паралельна обробка можлива за допомогою декількох пакетів, таких як rmpi та snow (керований користувачем) або doMC / foreach (на базі системи).

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