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?
Respostas:
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 ).
fonte
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 .
fonte
Algumas boas respostas aqui. Gostaria de participar da discussão adicionando as três notas a seguir :
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 ).
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 ).
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" .
fonte
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
RSQLite
pacote 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
).fonte
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 )
fonte
reshape2
,plyr
e agoradplyr
) e eu não acho que você pode fazer melhor do queggplot2
/ggvis
para visualizaçãoR é ó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.
fonte
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.
fonte
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) .
fonte
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).
fonte