Apakah bahasa R cocok untuk Big Data

48

R memiliki banyak perpustakaan yang ditujukan untuk Analisis Data (misalnya JAGS, BUGS, ARULES dll.), Dan disebutkan dalam buku teks populer seperti: J.Krusche, Melakukan Analisis Data Bayesian; B.Lantz, "Pembelajaran Mesin dengan R".

Saya telah melihat pedoman 5TB untuk dataset yang dianggap sebagai Big Data.

Pertanyaan saya adalah: Apakah R cocok untuk jumlah Data yang biasanya terlihat pada masalah Big Data? Apakah ada strategi yang digunakan ketika menggunakan R dengan ukuran dataset ini?

akellyirl
sumber
4
Selain jawaban di bawah, hal yang baik untuk diingat adalah kenyataan bahwa sebagian besar hal yang Anda butuhkan dari R mengenai Big Data dapat dilakukan dengan set ringkasan data yang sangat kecil dibandingkan dengan log mentah. Pengambilan sampel dari log mentah juga menyediakan cara yang mulus untuk menggunakan R untuk analisis tanpa pusing garis parsing dan garis-garis log mentah. Misalnya, untuk tugas pemodelan umum di tempat kerja saya secara rutin menggunakan pengurangan peta untuk meringkas 32 gb log mentah menjadi 28mb data pengguna untuk pemodelan.
cwharland

Jawaban:

40

Sebenarnya ini akan terjadi. Dalam buku R in a Nutshell bahkan ada bagian tentang menggunakan R dengan Hadoop untuk pemrosesan data besar. Ada beberapa pekerjaan di sekitar yang perlu dilakukan karena R mengerjakan semua itu dalam memori, jadi Anda pada dasarnya terbatas pada jumlah RAM yang tersedia untuk Anda.

Proyek matang untuk R dan Hadoop adalah RHadoop

RHadoop telah dibagi menjadi beberapa sub proyek, rhdfs, rhbase, rmr2, plyrmr, dan quickcheck ( wiki ).

MCP_infiltrator
sumber
Tetapi apakah menggunakan R dengan Hadoop mengatasi batasan ini (harus melakukan perhitungan dalam memori)?
Felipe Almeida
RHadoop memang mengatasi batasan ini. Tutorialnya di sini: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… menjabarkannya dengan jelas. Anda perlu beralih ke pola pikir mengurangi peta, tetapi itu memberikan kekuatan R ke lingkungan hadoop.
Steve Kallestad
2
Dua alternatif baru yang layak disebutkan adalah: SparkR databricks.com/blog/2015/06/09/... dan h2o.ai h2o.ai/produk keduanya cocok untuk data besar.
wacax
30

Masalah utama dengan menggunakan R untuk set data besar adalah kendala RAM. Alasan di balik menyimpan semua data dalam RAM adalah karena menyediakan akses yang jauh lebih cepat dan manipulasi data daripada yang disimpan di HDD. Jika Anda bersedia untuk mengambil hit pada kinerja, maka ya, itu cukup praktis untuk bekerja dengan dataset besar di R .

  • Paket RODBC: Memungkinkan koneksi ke DB eksternal dari R untuk mengambil dan menangani data. Karenanya, data yang dimanipulasi terbatas pada RAM Anda. Kumpulan data keseluruhan bisa jauh lebih besar.
  • Paket ff memungkinkan penggunaan set data yang lebih besar dari RAM dengan memanfaatkan halaman yang dipetakan dengan memori.
  • BigLM: Ini membangun model linier umum pada data besar. Ini memuat data ke dalam memori dalam potongan.
  • bigmemory: Paket R yang memungkinkan analisis paralel yang kuat dan efisien memori dan penggalian data dari kumpulan data besar. Itu memungkinkan menyimpan objek besar (matriks dll) dalam memori (pada RAM) menggunakan objek pointer eksternal untuk merujuk mereka.
asheeshr
sumber
1
Paket lain adalah distributedR yang memungkinkan Anda untuk bekerja dengan file yang didistribusikan dalam RAM.
adesantos
17

Beberapa jawaban bagus di sini. Saya ingin bergabung dalam diskusi dengan menambahkan tiga catatan berikut :

  1. Penekanan pertanyaan pada volume data sambil mengacu pada Big Data tentu dapat dipahami dan valid, terutama mengingat masalah pertumbuhan volume data yang melebihi pertumbuhan eksponensial kapasitas teknologi per Hukum Moore ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Karena itu, penting untuk diingat tentang aspek-aspek lain dari konsep big data. Berdasarkan definisi Gartner (penekanan pada tambang - AB): " Data besar adalah volume tinggi , kecepatan tinggi , dan / atau aset informasi bervariatif tinggi yang memerlukan bentuk pemrosesan baru untuk memungkinkan pengambilan keputusan yang ditingkatkan, penemuan wawasan, dan optimalisasi proses." (biasanya disebut sebagai " model 3Vs "). Saya menyebutkan ini, karena memaksa para ilmuwan data dan analis lain untuk mencari dan menggunakan paket R yang berfokus pada selain aspek volume data besar (dimungkinkan oleh kekayaan ekosistem R yang sangat besar ).

  3. Sementara jawaban yang ada menyebutkan beberapa paket R, terkait dengan data besar, untuk cakupan yang lebih komprehensif , saya akan merekomendasikan untuk merujuk pada CRAN Task View "Kinerja Tinggi dan Komputasi Paralel dengan R" ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), khususnya, bagian "Komputasi paralel: Hadoop" dan "Memori besar dan data di luar memori" .

Aleksandr Blekh
sumber
12

R bagus untuk "data besar"! Namun, Anda memerlukan alur kerja karena R terbatas (dengan sedikit penyederhanaan) dengan jumlah RAM di sistem operasi. Pendekatan yang saya ambil adalah berinteraksi dengan database relasional (lihat RSQLitepaket untuk membuat dan berinteraksi dengan database SQLite), jalankan query gaya-SQL untuk memahami struktur data, dan kemudian ekstrak himpunan bagian tertentu dari data untuk komputasi intensif Analisis statistik.

Ini hanya satu pendekatan, namun: ada paket yang memungkinkan Anda untuk berinteraksi dengan database lain (misalnya, Monet) atau menjalankan analisis dalam R dengan keterbatasan memori yang lebih sedikit (misalnya, lihat pbdR).

statsRus
sumber
9

Mempertimbangkan kriteria lain, saya pikir dalam beberapa kasus menggunakan Python mungkin jauh lebih unggul daripada R untuk Big Data. Saya tahu luasnya penggunaan R dalam materi pendidikan sains data dan perpustakaan analisis data yang baik tersedia untuk itu, tetapi kadang-kadang hanya bergantung pada tim.

Dalam pengalaman saya, bagi orang yang sudah terbiasa dengan pemrograman, menggunakan Python memberikan lebih banyak fleksibilitas dan dorongan produktivitas dibandingkan dengan bahasa seperti R, yang tidak dirancang dengan baik dan kuat dibandingkan dengan Python dalam hal bahasa pemrograman. Sebagai bukti, dalam kursus penambangan data di universitas saya, tugas akhir terbaik ditulis dengan Python, meskipun yang lain memiliki akses ke perpustakaan analisis data R yang kaya. Artinya, kadang-kadang produktivitas keseluruhan (mempertimbangkan bahan pembelajaran, dokumentasi, dll.) Untuk Python mungkin lebih baik daripada R bahkan dalam kurangnya perpustakaan analisis data tujuan khusus untuk Python. Juga, ada beberapa artikel bagus yang menjelaskan kecepatan cepat Python dalam ilmu data: Python Displacing R dan Rich Scientific Data Structures in Python yang mungkin segera mengisi celah perpustakaan yang tersedia untuk R.

Alasan penting lainnya untuk tidak menggunakan R adalah ketika bekerja dengan masalah Big Data dunia nyata, bertentangan dengan masalah akademis saja, ada banyak kebutuhan untuk alat dan teknik lain, seperti penguraian data, pembersihan, visualisasi, scrapping web, dan banyak lainnya yang jauh lebih mudah menggunakan bahasa pemrograman tujuan umum. Ini mungkin mengapa bahasa default yang digunakan dalam banyak kursus Hadoop (termasuk kursus online Udacity ) adalah Python.

Sunting:

Baru-baru ini DARPA juga menginvestasikan $ 3 juta untuk membantu mendanai pemrosesan data dan kemampuan visualisasi Python untuk pekerjaan big data, yang jelas merupakan tanda masa depan Python dalam Big Data. ( detail )

Amir Ali Akbari
sumber
3
R adalah kesenangan untuk bekerja dengan untuk manipulasi data ( reshape2,, plyrdan sekarang dplyr) dan saya tidak berpikir Anda bisa melakukan lebih baik daripada ggplot2/ ggvisuntuk visualisasi
organik agave
@pearpies Seperti yang dikatakan di awal jawaban saya, saya mengakui perpustakaan baik yang tersedia untuk R, tetapi secara keseluruhan, ketika mempertimbangkan semua area yang diperlukan untuk data besar (yang saya katakan beberapa dari mereka dalam jawaban), R tidak ada cocok untuk perpustakaan dewasa dan besar yang tersedia untuk Python.
Amir Ali Akbari
1
Peter dari Continuum Analytics (salah satu perusahaan di proyek DARPA yang dirujuk di atas ) sedang mengerjakan beberapa kode sumber terbuka yang sangat mengesankan untuk visualisasi data yang hanya melakukan hal-hal yang tidak dapat dilakukan oleh rangkaian kode lainnya .
kesalahan
5
Jawaban ini tampaknya sepenuhnya anekdotal dan hampir tidak menunjukkan di mana pun R yang lemah relatif terhadap Python.
stanekam
Ya Tuhan! "Sebagai bukti, dalam kursus penambangan data di universitas saya, tugas akhir terbaik ditulis dengan Python, meskipun yang lain memiliki akses ke perpustakaan analisis data R yang kaya." Dan Anda ingin agar pembaca menghargai analisis Anda? Wow. Mungkinkah ada faktor lain yang terlibat dalam proyek terbaik menjadi proyek python selain bahasa yang ditulisnya? sungguh ....
Shawn Mehan
7

R sangat bagus untuk banyak analisis. Seperti disebutkan sebelumnya, ada adaptasi yang lebih baru untuk data besar seperti MapR, RHadoop, dan versi RStudio yang dapat diskalakan.

Namun, jika kekhawatiran Anda adalah perpustakaan, perhatikan Spark. Spark dibuat untuk data besar dan JAUH lebih cepat daripada Hadoop saja. Ini memiliki pembelajaran mesin, SQL, streaming, dan pustaka grafik yang berkembang pesat. Dengan demikian memungkinkan banyak jika tidak semua analisis dilakukan dalam kerangka kerja (dengan beberapa API bahasa, saya lebih suka Scala) tanpa harus mengacak antara bahasa / alat.

Climbs_lika_Spyder
sumber
4

Seperti jawaban lain telah dicatat, R dapat digunakan bersama dengan Hadoop dan platform komputasi terdistribusi lainnya untuk meningkatkannya ke tingkat "Big Data". Namun, jika Anda tidak terikat dengan R secara khusus, tetapi bersedia untuk menggunakan lingkungan "seperti-R", Incanter adalah proyek yang mungkin bekerja dengan baik untuk Anda, karena itu asli untuk JVM (berdasarkan Clojure) dan tidak tidak memiliki "ketidakcocokan impedansi" antara dirinya dan Hadop yang dimiliki R. Dengan kata lain, dari Incanter, Anda dapat memanggil API Hadoop / HDFS asli Java tanpa harus melalui jembatan JNI atau apa pun.

mindcrime
sumber
2

Saya jauh dari ahli, tetapi pemahaman saya tentang subjek memberitahu saya bahwa R (hebat dalam statistik) dan misalnya Python (hebat dalam beberapa hal di mana R kurang) saling melengkapi dengan baik (seperti yang ditunjukkan oleh posting sebelumnya) .

Stenemo
sumber
0

Saya pikir sebenarnya ada sejumlah alat untuk bekerja dengan data besar di R. sparklyr akan menjadi pemain hebat di bidang itu. sparklyr adalah antarmuka R ke Apache Spark dan memungkinkan koneksi dengan kluster lokal dan jarak jauh, memberikan back-end dplyr. Anda juga bisa mengandalkan perpustakaan pembelajaran mesin Apache Spark. Selanjutnya pemrosesan paralel dimungkinkan dengan beberapa paket seperti rmpi dan salju (dikendalikan pengguna) atau doMC / foreach (berbasis sistem).

paoloeusebi
sumber