Czy język R jest odpowiedni dla Big Data


48

R ma wiele bibliotek, które są przeznaczone do analizy danych (np. JAGS, BŁĘDY, ARULES itp.) I jest wspomniany w popularnych podręcznikach, takich jak: J.Krusche, Doing Bayesian Data Analysis; B.Lantz, „Uczenie maszynowe z R”.

Widziałem wytyczną 5 TB, aby zestaw danych uważać za Big Data.

Moje pytanie brzmi: czy R jest odpowiedni dla ilości danych zwykle występujących w problemach z Big Data? Czy istnieją strategie, które należy zastosować, używając R z tym zestawem danych?


4
Oprócz poniższych odpowiedzi warto pamiętać, że większość rzeczy, których potrzebujesz od R w zakresie dużych zbiorów danych, można zrobić z zestawami danych podsumowujących, które są bardzo małe w porównaniu do surowych dzienników. Próbkowanie z surowego dziennika zapewnia również bezproblemowy sposób użycia R do analizy bez bólu głowy podczas analizowania linii i linii surowego dziennika. Na przykład w przypadku typowego zadania modelowania w pracy rutynowo używam map redukuj, aby podsumować 32 GB surowych dzienników do 28 MB danych użytkownika do modelowania.
cwharland

Odpowiedzi:


40

Właściwie to się zbliża. W książce R w pigułce znajduje się nawet rozdział dotyczący używania R z Hadoop do przetwarzania dużych danych. Istnieje kilka obejść, które należy wykonać, ponieważ R wykonuje wszystko, co działa w pamięci, więc jesteś zasadniczo ograniczony do ilości dostępnej pamięci RAM.

Dojrzały projekt dla R i Hadoop to RHadoop

RHadoop został podzielony na kilka podprojektów, rhdfs, rhbase, rmr2, plyrmr i quickcheck ( wiki ).


Ale czy użycie R z Hadoopem przezwycięża to ograniczenie (konieczność wykonywania obliczeń w pamięci)?
Felipe Almeida

RHadoop pokonuje to ograniczenie. Samouczek tutaj: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… jasno to określa. Musisz zmienić nastawienie na redukcję map, ale zapewnia ono moc R w środowisku hadoop.
Steve Kallestad,

2
Dwie nowe alternatywy, o których warto wspomnieć, to: SparkR databricks.com/blog/2015/06/09/… i h2o.ai h2o.ai/produkt, oba dobrze nadające się do dużych zbiorów danych.
wacax,

30

Głównym problemem związanym z używaniem R dla dużych zestawów danych jest ograniczenie pamięci RAM. Powodem przechowywania wszystkich danych w pamięci RAM jest to, że zapewnia znacznie szybszy dostęp i manipulowanie danymi niż przechowywanie na dyskach twardych. Jeśli jesteś gotów podjąć trafienie na wydajność, to tak, jest to dość praktyczne do pracy z dużymi zbiorami danych w R .

  • Pakiet RODBC: Umożliwia połączenie z zewnętrzną bazą danych z R w celu pobrania i obsługi danych. W związku z tym manipulowane dane są ograniczone do pamięci RAM. Ogólny zestaw danych może być znacznie większy.
  • Pakiet ff pozwala na korzystanie z zestawów danych większych niż RAM przy użyciu stron odwzorowanych w pamięci.
  • BigLM: Buduje uogólnione modele liniowe na dużych danych. Ładuje dane do pamięci w porcjach.
  • bigmemory: Pakiet R, który umożliwia wydajne i wydajne pod względem pamięci równoległe analizy i eksplorację dużych zbiorów danych. Pozwala na przechowywanie dużych obiektów (macierzy itp.) W pamięci (w pamięci RAM) przy użyciu zewnętrznych obiektów wskaźnikowych.

1
Kolejny pakiet to DistributedR, który umożliwia pracę z plikami rozproszonymi w pamięci RAM.
adesantos

17

Kilka dobrych odpowiedzi tutaj. Chciałbym dołączyć do dyskusji, dodając następujące trzy uwagi :

  1. Nacisk pytania na ilość danych w odniesieniu do dużych zbiorów danych jest z pewnością zrozumiały i uzasadniony, zwłaszcza biorąc pod uwagę problem wzrostu ilości danych przekraczający wykładniczy wzrost zdolności technologicznych zgodnie z prawem Moore'a ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. To powiedziawszy, należy pamiętać o innych aspektach koncepcji dużych zbiorów danych. W oparciu o definicję Gartnera (podkreślenie moje - AB): „ Duże zbiory danych to zasoby o dużej objętości , dużej prędkości i / lub dużej różnorodności, które wymagają nowych form przetwarzania, aby umożliwić lepsze podejmowanie decyzji, odkrywanie wglądu i optymalizację procesów”. (zwykle określany jako „ model 3V ”). Wspominam o tym, ponieważ zmusza to naukowców zajmujących się danymi i innych analityków do szukania i używania pakietów R, które koncentrują się na aspektach dużych zbiorów danych innych niż wolumenowe (dzięki bogactwu ogromnego ekosystemu R ).

  3. Podczas gdy istniejące odpowiedzi wspominają o niektórych pakietach R, związanych z dużymi zbiorami danych, w celu uzyskania bardziej kompleksowego zasięgu , polecam odnieść się do widoku zadań CRAN „Wysokowydajne i równoległe przetwarzanie z R” ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), w szczególności sekcje „Obliczenia równoległe: Hadoop” i „Duża pamięć i dane o braku pamięci” .


12

R doskonale nadaje się do „dużych zbiorów danych”! Jednak potrzebujesz przepływu pracy, ponieważ R jest ograniczony (z pewnym uproszczeniem) ilością pamięci RAM w systemie operacyjnym. Podejście, które stosuję, polega na interakcji z relacyjną bazą danych (zobacz RSQLitepakiet do tworzenia i interakcji z bazą danych SQLite), uruchamianiu zapytań w stylu SQL, aby zrozumieć strukturę danych, a następnie wyodrębnianiu określonych podzbiorów danych w celu intensywnego obliczeniowo Analiza statystyczna.

To tylko jedno podejście: istnieją pakiety, które pozwalają na interakcję z innymi bazami danych (np. Monet) lub przeprowadzanie analiz w języku R przy mniejszych ograniczeniach pamięci (np. Patrz pbdR).


9

Biorąc pod uwagę inne kryteria, myślę, że w niektórych przypadkach używanie Pythona może być znacznie lepsze niż R dla Big Data. Wiem, że R jest szeroko rozpowszechniony w materiałach edukacyjnych z zakresu nauk o danych i dostępnych dla niego dobrych bibliotek do analizy danych, ale czasami zależy to tylko od zespołu.

Z mojego doświadczenia wynika, że ​​dla osób zaznajomionych z programowaniem używanie Pythona zapewnia znacznie większą elastyczność i wzrost wydajności w porównaniu z językiem takim jak R, który nie jest tak dobrze zaprojektowany i wydajny w porównaniu z Pythonem pod względem języka programowania. Jako dowód na kursie eksploracji danych na moim uniwersytecie najlepszy projekt końcowy napisano w Pythonie, chociaż inni mają dostęp do bogatej biblioteki analizy danych R. Oznacza to, że czasami ogólna produktywność (biorąc pod uwagę materiały do ​​nauki, dokumentację itp.) Dla Pythona może być lepsza niż R, nawet przy braku specjalnych bibliotek analizy danych dla Pythona. Ponadto istnieje kilka dobrych artykułów wyjaśniających szybkie tempo Pythona w nauce o danych: Python Displacing R i Rich Scientific Data Structures in Python które wkrótce mogą wypełnić lukę dostępnych bibliotek dla R.

Innym ważnym powodem nieużywania R jest praca z rzeczywistymi problemami Big Data, w przeciwieństwie do problemów akademickich, istnieje duże zapotrzebowanie na inne narzędzia i techniki, takie jak parsowanie danych, czyszczenie, wizualizacja, złomowanie stron internetowych i wiele innych, które są znacznie łatwiejsze przy użyciu języka programowania ogólnego przeznaczenia. Może dlatego domyślnym językiem używanym w wielu kursach Hadoop (w tym kursie online Udacity ) jest Python.

Edytować:

Ostatnio DARPA zainwestowała również 3 miliony dolarów, aby sfinansować możliwości przetwarzania i wizualizacji danych w Pythonie dla zadań dużych zbiorów danych, co wyraźnie świadczy o przyszłości Pythona w Big Data. ( szczegóły )


3
R jest przyjemność pracować dla manipulacji danymi ( reshape2, plyri teraz dplyr) i nie sądzę, można to zrobić lepiej niż ggplot2/ ggvisdo wizualizacji
ekologicznej agawy

@pearpies Jak powiedziałem na początku mojej odpowiedzi, przyznaję, że dobre biblioteki są dostępne dla R, ale jako całość, biorąc pod uwagę wszystkie obszary potrzebne dla dużych zbiorów danych (które jak powiedziałem kilka z nich w odpowiedzi), R nie jest dopasuj do dojrzałych i ogromnych bibliotek dostępnych dla Pythona.
Amir Ali Akbari


5
Ta odpowiedź wydaje się całkowicie anegdotyczna i prawie nie pokazuje nigdzie, gdzie R jest słaby w stosunku do Pythona.
stanekam

O mój Boże! „Jako dowód na kursie eksploracji danych na moim uniwersytecie najlepszy projekt końcowy napisano w Pythonie, chociaż inni mają dostęp do bogatej biblioteki analizy danych R.” I chcesz, aby czytelnicy szanowali Twoją analizę? łał. Czy mogą istnieć inne czynniki związane z najlepszym projektem będącym projektem python innym niż język, w którym został napisany? naprawdę ....
Shawn Mehan,

7

R jest świetny do wielu analiz. Jak wspomniano wcześniej, istnieją nowsze adaptacje dużych danych, takie jak MapR, RHadoop i skalowalne wersje RStudio.

Jeśli jednak interesują Cię biblioteki, miej oko na Spark. Spark został stworzony dla dużych zbiorów danych i jest DUŻO szybszy niż sam Hadoop. Ma znacznie rozwijające się biblioteki do uczenia maszynowego, SQL, przesyłania strumieniowego i wykresów. Pozwala to na przeprowadzenie dużej, jeśli nie całej analizy w ramach (z interfejsami API dla wielu języków, wolę Scalę) bez konieczności przełączania między językami / narzędziami.


4

Jak zauważyły ​​inne odpowiedzi, R można używać razem z Hadoop i innymi platformami przetwarzania rozproszonego, aby skalować go do poziomu „Big Data”. Jeśli jednak nie jesteś przywiązany do R, ale chcesz korzystać ze środowiska „podobnego do R”, Incanter to projekt, który może Ci się dobrze przydać, ponieważ jest on rodzimy dla JVM (oparty na Clojure) i nie ma „niedopasowanie impedancji” między sobą a Hadopem, które ma R. Innymi słowy, z Incanter można wywoływać rodzime interfejsy API Hadoop / HDFS Java bez konieczności przechodzenia przez most JNI lub cokolwiek innego.


2

Jestem daleki od eksperta, ale moje rozumienie tematu mówi mi, że R (znakomity w statystykach) i np. Python (znakomity w kilku rzeczach, w których brakuje R) doskonale się uzupełniają (jak wskazano w poprzednich postach) .


0

Myślę, że w rzeczywistości istnieje mnóstwo narzędzi do pracy z dużymi danymi w R. Sparklyr będzie świetnym graczem w tej dziedzinie. sparklyr jest interfejsem R dla Apache Spark i pozwala na połączenie z lokalnymi i zdalnymi klastrami, zapewniając zaplecze dplyr. Można także polegać na bibliotekach uczenia maszynowego Apache Spark. Ponadto możliwe jest równoległe przetwarzanie z kilkoma pakietami, takimi jak rmpi i snow (kontrolowane przez użytkownika) lub doMC / foreach (oparte na systemie).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.