R 언어가 빅 데이터에 적합합니까?


48

R에는 데이터 분석 (예 : JAGS, BUGS, ARULES 등)을 목표로하는 많은 라이브러리가 있으며 J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "R을 이용한 기계 학습".

데이터 세트가 빅 데이터로 간주되는 5TB의 지침을 보았습니다.

내 질문은 : R은 일반적으로 빅 데이터 문제에서 볼 수있는 데이터의 양에 적합합니까? 이 크기의 데이터 집합에 R을 사용할 때 사용할 전략이 있습니까?


4
아래의 답변 외에도 기억해야 할 것은 빅 데이터와 관련하여 R에서 필요한 대부분의 작업은 원시 로그와 비교할 때 매우 작은 요약 데이터 세트로 수행 할 수 있다는 사실입니다. 원시 로그에서 샘플링하면 원시 로그의 라인과 라인을 구문 분석하는 두통없이 R을 분석에 사용하는 완벽한 방법을 제공합니다. 예를 들어, 작업중인 일반적인 모델링 작업의 경우 정기적으로 map reduce를 사용하여 모델링을 위해 32gbs의 원시 로그를 28mbs의 사용자 데이터로 요약합니다.
cwharland

답변:


40

실제로 이것은오고있다. 간단히 말해서 책 R에는 빅 데이터 처리를 위해 Hadoop과 함께 R을 사용하는 방법에 대한 섹션도 있습니다. R이 메모리에서 모든 작업을 수행하기 때문에 수행해야 할 몇 가지 해결 방법이 있으므로 기본적으로 사용 가능한 RAM의 양으로 제한됩니다.

R과 Hadoop을위한 성숙한 프로젝트는 RHadoop입니다.

RHadoop은 여러 하위 프로젝트, rhdfs, rhbase, rmr2, plyrmr 및 quickcheck ( wiki )로 나뉩니다 .


그러나 Hadoop과 함께 R을 사용하면 메모리에서 계산을 수행하는이 한계를 극복합니까?
Felipe Almeida 2016 년

RHadoop은이 한계를 극복합니다. 여기 튜토리얼 : github.com/RevolutionAnalytics/rmr2/blob/master/docs/...는 명확하게 그것을 주문. mapreduce 사고 방식으로 전환해야하지만 hadoop 환경에 R의 힘을 제공합니다.
Steve Kallestad

2
언급 할 가치가있는 두 가지 새로운 대안은 SparkR databricks.com/blog/2015/06/09/… 및 h2o.ai h2o.ai/product 모두 빅 데이터에 적합합니다.
wacax

30

대용량 데이터 세트에 R을 사용할 때의 주요 문제점은 RAM 제약입니다. 모든 데이터를 RAM에 보관해야하는 이유는 HDD에 저장하는 것보다 훨씬 빠른 액세스 및 데이터 조작을 제공하기 때문입니다. 성능에 영향을 줄 수 있다면 R에서 큰 데이터 세트 로 작업하는 것이 매우 실용적 입니다.

  • RODBC 패키지 : R에서 외부 DB에 연결하여 데이터를 검색하고 처리 할 수 ​​있습니다. 따라서 조작 되는 데이터는 RAM으로 제한됩니다. 전체 데이터 세트가 훨씬 더 커질 수 있습니다.
  • ff 패키지는 메모리 매핑 된 페이지를 활용하여 RAM보다 큰 데이터 세트를 사용할 수 있습니다.
  • BigLM : 빅 데이터에 일반화 된 선형 모델을 작성합니다. 데이터를 메모리에 청크로로드합니다.
  • bigmemory : 강력하고 메모리 효율적인 병렬 분석 및 대규모 데이터 세트의 데이터 마이닝을 허용하는 R 패키지. 외부 포인터 객체를 사용하여 큰 객체 (매트릭스 등)를 메모리 (RAM의)에 저장할 수 있습니다.

1
RAM에있는 분산 파일로 작업 할 수 있도록하는 다른 패키지가 distributionR입니다.
adesantos

17

여기에 좋은 답변이 있습니다. 다음 세 가지 메모를 추가하여 토론에 참여하고 싶습니다 .

  1. 데이터 를 언급하면서 데이터 볼륨 에 대한 질문의 강조 는 특히 무어의 법칙에 따른 기술 용량의 기하 급수적 성장을 능가 하는 데이터 볼륨 성장 문제 를 고려할 때 확실히 이해 가능하고 유효합니다 ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. 그러나 빅 데이터 개념의 다른 측면을 기억하는 것이 중요합니다. 를 기반으로 가트너 의 정의 (강조 광산 - AB) : " 빅 데이터는 높은 볼륨 , 높은 속도 및 / 또는 높은 다양한 향상된 의사 결정, 통찰력 발견 및 프로세스 최적화를 가능하게 처리의 새로운 형태를 요구하는 정보 자산." (일반적으로 " 3V 모델 " 이라고 함 ). 가에 대한보고에 초점 R 패키지를 사용하는 데이터 과학자들과 다른 분석가 강제 때문에, 이것을 언급 볼륨 이외의 (에 의해 활성화 빅 데이터의 측면 풍요 로움 막대한의 R 생태계 ).

  3. 기존 답변에는 빅 데이터와 관련된 일부 R 패키지가 더 포괄적 인 적용 범위에 대해 언급되어 있지만 CRAN 작업보기 "R을 사용한 고성능 및 병렬 컴퓨팅" ( http : //cran.r-project) 을 참조하는 것이 좋습니다 . org / web / views / HighPerformanceComputing.html ), 특히 "병렬 컴퓨팅 : Hadoop""대용량 메모리 및 메모리 부족 데이터" 섹션 .


12

R은 "빅 데이터"에 적합합니다! 그러나 운영 체제의 RAM 크기에 따라 R이 일부 단순화되어 워크 플로가 필요합니다. 내가 취하는 접근법은 관계형 데이터베이스 RSQLite와 상호 작용하고 (SQLite 데이터베이스를 만들고 상호 작용 하는 패키지 참조 ) SQL 스타일 쿼리를 실행하여 데이터의 구조를 이해 한 다음 계산 집약적 인 데이터의 특정 하위 집합을 추출하는 것입니다 통계 분석.

그러나이 한 가지 접근 방식은 다른 데이터베이스 (예 : Monet)와 상호 작용하거나 더 적은 메모리 제한으로 R에서 분석을 실행할 수있는 패키지가 있습니다 (예 : 참조 pbdR).


9

다른 기준을 고려할 때 어떤 경우에는 Python을 사용하는 것이 Big Data의 R보다 훨씬 우수 할 수 있다고 생각합니다. 데이터 과학 교육 자료 및 R에 사용할 수있는 우수한 데이터 분석 라이브러리에서 R의 광범위한 사용을 알고 있지만 때로는 팀에 따라 다릅니다.

내 경험상 프로그래밍에 이미 익숙한 사람들에게 파이썬을 사용하면 프로그래밍 언어 측면에서 파이썬에 비해 잘 설계되고 강력하지 않은 R과 같은 언어에 비해 유연성과 생산성이 훨씬 향상됩니다. 증거로, 내 대학의 데이터 마이닝 과정에서 최고의 최종 프로젝트는 Python으로 작성되었지만 다른 프로젝트는 R의 풍부한 데이터 분석 라이브러리에 액세스 할 수 있습니다. 즉, 파이썬을위한 특수 목적 데이터 분석 라이브러리가 없어도 파이썬의 전반적인 생산성 (학습 자료, 문서 등을 고려한)이 R보다 우수 할 수 있습니다. 또한 데이터 과학에서 파이썬의 빠른 속도를 설명하는 좋은 기사가 있습니다 .Python에서 R풍부한 과학적 데이터 구조 대체 곧 R에 사용할 수있는 라이브러리의 간격을 채울 수 있습니다.

R을 사용하지 않는 또 다른 중요한 이유는 실제 빅 데이터 문제를 다루는 경우 학문적 문제와 달리 데이터 구문 분석, 정리, 시각화, 웹 스크랩 핑과 같은 다른 도구와 기술이 많이 필요하기 때문입니다. 범용 프로그래밍 언어를 사용하면 훨씬 쉽습니다. 많은 Hadoop 과정 (Udacity의 온라인 과정 포함)에서 사용되는 기본 언어 가 Python 인 이유가 여기에 있습니다 .

편집하다:

최근 DARPA는 빅 데이터 작업을위한 Python의 데이터 처리 및 시각화 기능에 자금을 지원하기 위해 3 백만 달러를 투자했습니다. ( 상세 )


3
R은 데이터 조작을 위해 함께 작동하도록 (기쁨입니다 reshape2, plyr그리고 지금은 dplyr) 내가 당신보다 더 잘 할 수 있다고 생각하지 않습니다 ggplot2/ ggvis시각화
유기 용설란

@pearpies 내 대답의 시작 부분에서 말했듯이, R에 사용할 수있는 좋은 라이브러리를 인정하지만, 빅 데이터에 필요한 모든 영역을 고려할 때 (나는 대답에서 몇 가지 말했듯이) R은 아니오 파이썬에서 사용할 수있는 성숙하고 거대한 라이브러리와 일치합니다.
Amir Ali Akbari


5
이 대답은 전적으로 일화적인 것으로 보이며 파이썬에 비해 R이 약한 곳은 거의 보여주지 않습니다.
stanekam

맙소사! "우리 대학의 데이터 마이닝 과정에서 가장 좋은 최종 프로젝트는 Python으로 작성되었지만 다른 프로젝트는 R의 풍부한 데이터 분석 라이브러리에 액세스 할 수 있다는 증거입니다." 독자가 분석을 존중하도록 하시겠습니까? 와. 최고의 프로젝트와 관련된 다른 요인이 작성된 언어 이외의 파이썬 프로젝트 일 수 있습니까? 정말로 ....
Shawn Mehan

7

R은 많은 분석에 좋습니다. 앞에서 언급했듯이 MapR, RHadoop 및 확장 가능한 RStudio 버전과 같은 빅 데이터에 대한 새로운 적응이 있습니다.

그러나 관심사가 도서관이라면 Spark를 주시하십시오. Spark는 빅 데이터 용으로 만들어졌으며 Hadoop보다 훨씬 빠릅니다. 머신 러닝, SQL, 스트리밍 및 그래프 라이브러리가 크게 증가하고 있습니다. 따라서 언어 / 도구 사이를 섞지 않고 프레임 워크 내에서 모든 분석을 수행 할 수있는 것은 아니지만 (여러 언어 API를 사용하는 경우 Scala를 선호합니다).


4

다른 답변에서 알 수 있듯이 R을 Hadoop 및 기타 분산 컴퓨팅 플랫폼과 함께 사용하여 "빅 데이터"수준으로 확장 할 수 있습니다. 그러나 R에 구체적으로 얽매이지 않고 "R-like"환경을 사용하려는 경우 Incanter 는 JVM 고유의 Clojure를 기반으로하기 때문에 잘 작동 할 수있는 프로젝트입니다. R과 가진 Hadop 자체와 "임피던스 불일치"가 없습니다. 즉, Incanter에서 JNI 브릿지 또는 다른 것을 거치지 않고도 Java 기본 Hadoop / HDFS API를 호출 할 수 있습니다.


2

나는 전문가와는 거리가 멀지 만 주제에 대한 나의 이해는 R (통계가 뛰어남)과 Python (R이 부족한 것들 중 몇 가지가 뛰어남)이 서로를 잘 보완한다는 것을 알려줍니다 (이전 게시물에서 지적했듯이) .


0

R에서 빅 데이터를 다루는 데 필요한 도구가 실제로 있다고 생각합니다. sparklyr는 해당 분야에서 훌륭한 플레이어가 될 것입니다. sparklyr는 Apache Spark에 대한 R 인터페이스이며 로컬 및 원격 클러스터와 연결하여 dplyr 백엔드를 제공합니다. Apache Spark의 기계 학습 라이브러리를 사용할 수도 있습니다. 또한 rmpi 및 snow (사용자 제어) 또는 doMC / foreach (시스템 기반)와 같은 여러 패키지로 병렬 처리가 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.