A linguagem R é adequada para Big Data

48

R possui muitas bibliotecas destinadas à análise de dados (por exemplo, JAGS, BUGS, ARULES etc.), e são mencionadas em livros populares como: J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "Machine Learning with R".

Eu vi uma diretriz de 5 TB para um conjunto de dados ser considerado como Big Data.

Minha pergunta é: R é adequado para a quantidade de dados normalmente vista em problemas de Big Data? Existem estratégias a serem empregadas ao usar R com esse tamanho de conjunto de dados?

akellyirl
fonte
4
Além das respostas abaixo, é bom lembrar que a maioria das coisas que você precisa do R em relação ao Big Data pode ser feita com conjuntos de dados resumidos muito pequenos em comparação com logs brutos. A amostragem do log bruto também fornece uma maneira perfeita de usar R para análise sem a dor de cabeça de analisar linhas e linhas de um log bruto. Por exemplo, para uma tarefa de modelagem comum no trabalho, rotineiramente uso map reduz para resumir 32 gbs de logs brutos a 28mbs de dados do usuário para modelagem.
Cwharland

Respostas:

40

Na verdade, isso está chegando. No livro R em poucas palavras, há até uma seção sobre o uso do R com o Hadoop para processamento de grandes dados. Existem algumas soluções alternativas que precisam ser feitas, porque o R faz todo o trabalho na memória; portanto, você está basicamente limitado à quantidade de RAM disponível.

Um projeto maduro para o R e o Hadoop é o RHadoop

O RHadoop foi dividido em vários subprojetos, rhdfs, rhbase, rmr2, plyrmr e quickcheck ( wiki ).

MCP_infiltrator
fonte
Mas o uso de R com o Hadoop supera essa limitação (é necessário fazer cálculos na memória)?
Felipe Almeida
O RHadoop supera essa limitação. O tutorial aqui: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… explica claramente. Você precisa mudar para uma mentalidade de mapreduce, mas fornece o poder de R ao ambiente hadoop.
Steve Kallestad
2
Duas novas alternativas que vale a pena mencionar são: SparkR databricks.com/blog/2015/06/09/… e h2o.ai h2o.ai/product, ambos adequados para big data.
Wacax
30

O principal problema com o uso de R para grandes conjuntos de dados é a restrição de RAM. A razão por trás da manutenção de todos os dados na RAM é que ela fornece acesso e manipulações de dados muito mais rápidos do que os armazenados em HDs. Se você está disposto a tomar uma batida no desempenho, então sim, é bastante prático para trabalhar com grandes conjuntos de dados em R .

  • Pacote RODBC: Permite conectar ao banco de dados externo do R para recuperar e manipular dados. Portanto, os dados que estão sendo manipulados são restritos à sua RAM. O conjunto geral de dados pode ser muito maior.
  • O pacote ff permite o uso de conjuntos de dados maiores que a RAM utilizando páginas mapeadas na memória.
  • BigLM: constrói modelos lineares generalizados em big data. Ele carrega dados na memória em pedaços.
  • bigmemory: um pacote R que permite análises paralelas poderosas e com eficiência de memória e mineração de dados de conjuntos de dados massivos. Permite armazenar objetos grandes (matrizes etc.) na memória (na RAM) usando objetos de ponteiro externos para fazer referência a eles.
asheeshr
fonte
11
Outro pacote é distribuído, o que permite trabalhar com arquivos distribuídos na RAM.
Adesivas
17

Algumas boas respostas aqui. Gostaria de participar da discussão adicionando as três notas a seguir :

  1. A ênfase da pergunta no volume de dados enquanto se refere ao Big Data é certamente compreensível e válida, especialmente considerando o problema do crescimento do volume de dados ultrapassando o crescimento exponencial das capacidades tecnológicas pela Lei de Moore ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Dito isto, é importante lembrar sobre outros aspectos do conceito de big data. Com base na definição do Gartner (ênfase mina - AB): " Big data são ativos de informações de alto volume , alta velocidade e / ou alta variedade que requerem novas formas de processamento para permitir tomada de decisão aprimorada, descoberta de insight e otimização de processos". (geralmente chamado de " modelo 3Vs "). Menciono isso, porque força os cientistas de dados e outros analistas a procurar e usar pacotes R que se concentram em outros aspectos que não o volume de big data (habilitados pela riqueza do enorme ecossistema R ).

  3. Enquanto as respostas existentes mencionam alguns pacotes R, relacionados a big data, para uma cobertura mais abrangente , eu recomendo consultar a Exibição de Tarefas CRAN "Computação Paralela e de Alto Desempenho com R" ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), em particular, as seções "Computação paralela: Hadoop" e "Memória grande e dados de falta de memória" .

Aleksandr Blekh
fonte
12

R é ótimo para "big data"! No entanto, você precisa de um fluxo de trabalho, pois o R é limitado (com algumas simplificações) pela quantidade de RAM no sistema operacional. A abordagem adotada é interagir com um banco de dados relacional (consulte o RSQLitepacote para criar e interagir com um banco de dados SQLite), executar consultas no estilo SQL para entender a estrutura dos dados e, em seguida, extrair subconjuntos específicos dos dados para uso intensivo em computação análise estatística.

Porém, essa é apenas uma abordagem: existem pacotes que permitem interagir com outros bancos de dados (por exemplo, Monet) ou executar análises no R com menos limitações de memória (por exemplo, consulte pbdR).

statsRus
fonte
9

Considerando outro critério, acho que, em alguns casos, o uso do Python pode ser muito superior ao R para Big Data. Conheço o amplo uso do R em materiais educacionais de ciência de dados e as boas bibliotecas de análise de dados disponíveis para ele, mas às vezes isso depende apenas da equipe.

Na minha experiência, para pessoas já familiarizadas com programação, o uso de Python oferece muito mais flexibilidade e aumento de produtividade em comparação com uma linguagem como R, que não é tão bem projetada e poderosa em comparação com Python em termos de linguagem de programação. Como prova, em um curso de mineração de dados na minha universidade, o melhor projeto final foi escrito em Python, embora os outros tenham acesso à rica biblioteca de análise de dados de R. Ou seja, às vezes a produtividade geral (considerando materiais de aprendizagem, documentação etc.) para Python pode ser melhor que R, mesmo na falta de bibliotecas de análise de dados para finalidades especiais para Python. Além disso, existem alguns bons artigos explicando o ritmo acelerado do Python na ciência de dados: Python Displacing R e Rich Scientific Data Structures in Python que em breve poderão preencher a lacuna de bibliotecas disponíveis para R.

Outro motivo importante para não usar o R ​​é quando se trabalha com problemas de Big Data no mundo real, ao contrário dos problemas acadêmicos, há muita necessidade de outras ferramentas e técnicas, como análise de dados, limpeza, visualização, sucateamento na Web e muitas outras que são muito mais fáceis usando uma linguagem de programação de uso geral. Pode ser por isso que o idioma padrão usado em muitos cursos do Hadoop (incluindo o curso on-line do Udacity ) é Python.

Editar:

Recentemente, a DARPA também investiu US $ 3 milhões para ajudar a financiar os recursos de processamento e visualização de dados do Python para trabalhos de big data, o que é claramente um sinal do futuro do Big Data em Big Data. ( detalhes )

Amir Ali Akbari
fonte
3
R é um prazer trabalhar com a manipulação de dados ( reshape2, plyre agora dplyr) e eu não acho que você pode fazer melhor do que ggplot2/ ggvispara visualização
orgânica agave
@pearpies Como dito no início da minha resposta, admito as boas bibliotecas disponíveis para o R, mas como um todo, ao considerar todas as áreas necessárias para o big data (que eu disse algumas delas na resposta), R não é corresponde às bibliotecas maduras e enormes disponíveis para Python.
Amir Ali Akbari
11
Peter, da Continuum Analytics (uma das empresas do projeto DARPA acima mencionado ), está trabalhando em um código de código-fonte muito impressionante para visualização de dados que simplesmente faz coisas que outros conjuntos de códigos não são capazes de fazer .
erros cometidos
5
Essa resposta parece totalmente anedótica e dificilmente mostra qualquer lugar em que R seja fraco em relação ao Python.
stanekam
Ó meu Deus! "Como evidência, em um curso de mineração de dados na minha universidade, o melhor projeto final foi escrito em Python, embora os outros tenham acesso à rica biblioteca de análise de dados de R." E você quer que os leitores respeitem sua análise? Uau. Poderia haver outros fatores envolvidos no melhor projeto sendo um projeto python que não seja o idioma em que foi escrito? realmente ....
Shawn Mehan
7

R é ótimo para muitas análises. Como mencionado, existem adaptações mais recentes para big data, como MapR, RHadoop e versões escaláveis ​​do RStudio.

No entanto, se sua preocupação for bibliotecas, fique de olho no Spark. O Spark foi criado para big data e é MUITO mais rápido que o Hadoop sozinho. Possui vastas bibliotecas de aprendizado de máquina, SQL, streaming e gráficos. Assim, é possível permitir que muito, se não toda a análise, seja feita dentro da estrutura (com APIs de vários idiomas, eu prefiro o Scala) sem ter que alternar entre idiomas / ferramentas.

Climbs_lika_Spyder
fonte
4

Como outras respostas observaram, o R pode ser usado junto com o Hadoop e outras plataformas de computação distribuída para escalá-lo até o nível "Big Data". No entanto, se você não está casado com o R especificamente, mas deseja usar um ambiente "tipo R", o Incanter é um projeto que pode funcionar bem para você, pois é nativo da JVM (baseado no Clojure) e não tem a "incompatibilidade de impedância" entre si e Hadop que R possui. Ou seja, do Incanter, é possível chamar APIs nativas de Java Hadoop / HDFS sem precisar passar por uma ponte JNI ou qualquer outra coisa.

mindcrime
fonte
2

Estou longe de ser um especialista, mas minha compreensão do assunto me diz que R (excelente em estatística) e, por exemplo, Python (excelente em várias daquelas coisas em que R está faltando) complementam-se muito bem (como apontado em postagens anteriores) .

Stenemo
fonte
0

Penso que, na verdade, há uma pletora de ferramentas para trabalhar com big data em R. sparklyr será um grande player nesse campo. O sparklyr é uma interface R do Apache Spark e permite a conexão com clusters locais e remotos, fornecendo um back-end dplyr. Também se pode confiar nas bibliotecas de aprendizado de máquina do Apache Spark. Além disso, o processamento paralelo é possível com vários pacotes, como rmpi e snow (controlado pelo usuário) ou doMC / foreach (baseado em sistema).

paoloeusebi
fonte