ภาษา R เหมาะสำหรับ Big Data หรือไม่


48

R มีห้องสมุดหลายแห่งที่มุ่งเน้นการวิเคราะห์ข้อมูล (เช่น JAGS, BUGS, ARULES และอื่น ๆ ) และถูกกล่าวถึงในหนังสือเรียนที่ได้รับความนิยมเช่น: J.Krusche, การวิเคราะห์ข้อมูลแบบเบย์ B. Lantz, "การเรียนรู้ของเครื่องจักรด้วย R"

ฉันเห็นแนวทาง 5TB สำหรับชุดข้อมูลที่ถือว่าเป็นข้อมูลขนาดใหญ่

คำถามของฉันคือ R เหมาะสมกับปริมาณข้อมูลที่มักพบในปัญหา Big Data หรือไม่? มีกลยุทธ์ที่จะใช้เมื่อใช้ R กับชุดข้อมูลขนาดนี้หรือไม่?


4
นอกจากคำตอบด้านล่างสิ่งที่ควรจดจำคือความจริงที่ว่าสิ่งที่คุณต้องการจาก R เกี่ยวกับ Big Data สามารถทำได้ด้วยชุดข้อมูลสรุปที่มีขนาดเล็กมากเมื่อเทียบกับบันทึกดิบ การสุ่มตัวอย่างจากบันทึกดิบยังให้วิธีการที่ราบรื่นในการใช้ R สำหรับการวิเคราะห์โดยไม่ต้องปวดหัวของการแยกวิเคราะห์บรรทัดและบรรทัดของบันทึกดิบ ตัวอย่างเช่นสำหรับงานสร้างแบบจำลองทั่วไปในที่ทำงานฉันมักจะใช้การลดแผนที่เพื่อสรุปบันทึกดิบ 32 gbs เป็น 28mbs ของข้อมูลผู้ใช้สำหรับการสร้างแบบจำลอง
cwharland

คำตอบ:


40

จริงๆแล้วนี่กำลังเกิดขึ้น ในหนังสือ R ในกะลามีแม้แต่ส่วนในการใช้ R กับ Hadoop สำหรับการประมวลผลข้อมูลขนาดใหญ่ มีงานบางอย่างที่ต้องทำเพราะ R ทำงานได้ทั้งหมดในหน่วยความจำดังนั้นคุณจึง จำกัด จำนวน RAM ที่คุณมีให้โดยทั่วไป

โครงการที่ครบกำหนดสำหรับ R และ Hadoop คือRHadoop

RHadoop ถูกแบ่งออกเป็นหลายโครงการย่อย, rhdfs, rhbase, rmr2, plyrmr และ quickcheck ( wiki )


แต่การใช้ R กับ Hadoop เอาชนะข้อ จำกัด นี้ (ต้องคำนวณในหน่วยความจำ) หรือไม่?
Felipe Almeida

RHadoop สามารถเอาชนะข้อ จำกัด นี้ได้ บทช่วยสอนที่นี่: github.com/RevolutionAnalytics/rmr2/blob/master/docs/…จะสะกดออกมาอย่างชัดเจน คุณจำเป็นต้องเปลี่ยนไปสู่ความคิด mapreduce แต่มันให้พลังของ R กับสภาพแวดล้อม hadoop
Steve Kallestad

2
สองทางเลือกใหม่ที่ควรค่าแก่การกล่าวถึงคือ: SparkR databricks.com/blog/2015/06/09/…และ h2o.ai h2o.ai/productเหมาะสำหรับข้อมูลขนาดใหญ่
wacax

30

ปัญหาหลักของการใช้ R สำหรับชุดข้อมูลขนาดใหญ่คือข้อ จำกัด ของ RAM เหตุผลที่อยู่เบื้องหลังการเก็บข้อมูลทั้งหมดใน RAM คือให้การเข้าถึงและการจัดการข้อมูลที่รวดเร็วกว่าการจัดเก็บบน HDD หากคุณมีความยินดีที่จะใช้ตีประสิทธิภาพแล้วใช่มันเป็นจริงมากทีเดียวที่จะทำงานร่วมกับชุดข้อมูลขนาดใหญ่ในการวิจัย

  • RODBC Package: อนุญาตให้เชื่อมต่อกับฐานข้อมูลภายนอกจาก R เพื่อดึงและจัดการข้อมูล ดังนั้นข้อมูลที่ถูกจัดการนั้น จำกัด อยู่ที่ RAM ของคุณ ชุดข้อมูลโดยรวมสามารถมีขนาดใหญ่ขึ้นมาก
  • แพคเกจ ff อนุญาตให้ใช้ชุดข้อมูล RAM ที่ใหญ่กว่าได้โดยใช้หน้าหน่วยความจำที่แมป
  • BigLM: มันสร้างโมเดลเชิงเส้นทั่วไปบนข้อมูลขนาดใหญ่ มันโหลดข้อมูลลงในหน่วยความจำเป็นชิ้น ๆ
  • bigmemory: แพคเกจ R ที่ช่วยให้การวิเคราะห์แบบขนานที่ทรงพลังและมีประสิทธิภาพหน่วยความจำและการขุดข้อมูลของชุดข้อมูลขนาดใหญ่ มันอนุญาตให้จัดเก็บวัตถุขนาดใหญ่ (เมทริกซ์ ฯลฯ ) ในหน่วยความจำ (บน RAM) โดยใช้วัตถุตัวชี้ภายนอกเพื่ออ้างอิงถึงพวกเขา

1
แพ็คเกจอื่นถูกแจกจ่าย R ซึ่งอนุญาตให้คุณทำงานกับไฟล์แบบกระจายใน RAM
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 เหมาะสำหรับ "ข้อมูลขนาดใหญ่"! อย่างไรก็ตามคุณต้องมีเวิร์กโฟลว์เนื่องจาก R ถูก จำกัด (ด้วยความเรียบง่ายบางอย่าง) ด้วยจำนวน RAM ในระบบปฏิบัติการ วิธีที่ฉันใช้คือการโต้ตอบกับฐานข้อมูลเชิงสัมพันธ์ (ดูRSQLiteแพ็คเกจสำหรับการสร้างและการโต้ตอบกับฐานข้อมูลSQLite) เรียกใช้แบบสอบถามสไตล์ SQL เพื่อทำความเข้าใจโครงสร้างของข้อมูลแล้วแยกชุดย่อยของข้อมูลสำหรับการคำนวณแบบเข้มข้น การวิเคราะห์ทางสถิติ.

อย่างไรก็ตามนี่เป็นเพียงวิธีการเดียว: มีแพ็คเกจที่ให้คุณโต้ตอบกับฐานข้อมูลอื่น (เช่น Monet) หรือเรียกใช้การวิเคราะห์ใน R ด้วยข้อ จำกัด หน่วยความจำที่น้อยลง (เช่นดูpbdR)


9

เมื่อพิจารณาถึงเกณฑ์อื่นฉันคิดว่าในบางกรณีการใช้ Python อาจเหนือกว่า R สำหรับ Big Data มาก ฉันรู้ว่ามีการใช้ R อย่างกว้างขวางในสื่อการศึกษาวิทยาศาสตร์ข้อมูลและห้องสมุดการวิเคราะห์ข้อมูลที่ดีที่มีให้ แต่บางครั้งมันก็ขึ้นอยู่กับทีม

จากประสบการณ์ของฉันสำหรับผู้ที่คุ้นเคยกับการเขียนโปรแกรมการใช้ Python ให้ความยืดหยุ่นและเพิ่มประสิทธิภาพการทำงานมากกว่าเมื่อเปรียบเทียบกับภาษาอย่าง R ซึ่งไม่ได้ออกแบบมาอย่างดีและทรงพลังเมื่อเทียบกับ Python ในแง่ของภาษาการเขียนโปรแกรม เป็นหลักฐานในหลักสูตรการทำเหมืองข้อมูลในมหาวิทยาลัยของฉันโครงการสุดท้ายที่ดีที่สุดถูกเขียนใน Python แม้ว่าคนอื่น ๆ สามารถเข้าถึงไลบรารีการวิเคราะห์ข้อมูลที่หลากหลายของ R ได้ นั่นคือบางครั้งประสิทธิภาพโดยรวม (พิจารณาจากสื่อการเรียนรู้เอกสารประกอบ ฯลฯ ) สำหรับ Python อาจดีกว่า R แม้จะไม่มีไลบรารี่การวิเคราะห์ข้อมูลที่มีวัตถุประสงค์พิเศษสำหรับ Python นอกจากนี้ยังมีบทความดีๆที่อธิบายถึงการก้าวไปอย่างรวดเร็วของ Python ในศาสตร์ข้อมูล: Python แทนที่ Rและโครงสร้างข้อมูลทางวิทยาศาสตร์ที่หลากหลายใน Python ที่อาจเติมเต็มช่องว่างของไลบรารีที่มีอยู่สำหรับ R ในไม่ช้า

อีกเหตุผลที่สำคัญสำหรับการไม่ใช้ R คือเมื่อทำงานกับปัญหาบิ๊กดาต้าจริงในทางตรงกันข้ามกับปัญหาทางวิชาการเท่านั้นมีความจำเป็นมากสำหรับเครื่องมือและเทคนิคอื่น ๆ เช่นการแยกวิเคราะห์ข้อมูล ง่ายกว่ามากโดยใช้ภาษาโปรแกรมทั่วไป นี่อาจเป็นเหตุผลว่าทำไมภาษาเริ่มต้นที่ใช้ในหลักสูตร Hadoop หลายแห่ง (รวมถึงหลักสูตรออนไลน์ของ Udacity ) คือ Python

แก้ไข:

เมื่อเร็ว ๆ นี้ DARPA ยังลงทุน 3 ล้านเหรียญเพื่อช่วยสนับสนุนการประมวลผลข้อมูลของ Python และการสร้างภาพข้อมูลสำหรับงานข้อมูลขนาดใหญ่ซึ่งเป็นสัญญาณบ่งบอกถึงอนาคตของ Python ใน Big Data อย่างชัดเจน ( รายละเอียด )


3
R คือความสุขที่จะทำงานร่วมกับสำหรับการจัดการข้อมูล ( reshape2, plyrและตอนนี้dplyr) และฉันไม่คิดว่าคุณสามารถทำได้ดีกว่าggplot2/ ggvisสำหรับการแสดง
หางจระเข้อินทรีย์

@pearpies ดังที่ได้กล่าวไว้ในตอนต้นของคำตอบของฉันฉันยอมรับไลบรารีที่ดีสำหรับ R แต่โดยรวมเมื่อพิจารณาทุกพื้นที่ที่จำเป็นสำหรับข้อมูลขนาดใหญ่ ตรงกับห้องสมุดที่โตแล้วและใหญ่สำหรับ Python
Amir Ali Akbari

1
ปีเตอร์จาก Continuum Analytics (หนึ่งใน บริษัท ในโครงการ DARPA อ้างถึงข้างต้น ) คือการทำงานในบางส่วนที่น่าประทับใจมากรหัส opensourceสำหรับการแสดงข้อมูลที่เพียงแค่ทำในสิ่งที่ชุดอื่น ๆ ของรหัสที่ไม่สามารถที่จะทำ
ความผิดพลาด

5
คำตอบนี้ดูเหมือนจะเป็นเรื่องราวทั้งหมดและแทบจะไม่แสดงให้เห็นทุกที่ที่ R อ่อนแอเมื่อเทียบกับ Python
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) และไม่ ไม่มี "อิมพีแดนซ์ไม่ตรงกัน" ระหว่างตัวเองและ Hadop ที่ R มี กล่าวคือจาก Incanter คุณสามารถเรียกใช้ Java Hadoop / HDFS APIs ของ Java โดยไม่จำเป็นต้องผ่านสะพาน JNI หรืออะไรก็ตาม


2

ฉันยังห่างไกลจากผู้เชี่ยวชาญ แต่ความเข้าใจของฉันในเรื่องบอกฉันว่า R (ยอดเยี่ยมในสถิติ) และเช่น Python (ยอดเยี่ยมในหลาย ๆ สิ่งที่ขาด R) เติมเต็มซึ่งกันและกันได้ค่อนข้างดี (ดังที่โพสต์ก่อนหน้า) .


0

ฉันคิดว่ามีเครื่องมือ pletora จริง ๆ สำหรับการทำงานกับข้อมูลขนาดใหญ่ใน R. sparklyr จะเป็นผู้เล่นที่ยอดเยี่ยมในฟิลด์นั้น sparklyr เป็นอินเทอร์เฟซ R สำหรับ Apache Spark และอนุญาตให้เชื่อมต่อกับกลุ่มโลคัลและรีโมตซึ่งจัดเตรียมส่วนหลัง dplyr ท่านสามารถพึ่งพาไลบรารีการเรียนรู้ของเครื่อง Apache Spark ได้ นอกจากนี้การประมวลผลแบบขนานยังเป็นไปได้ด้วยแพ็คเกจจำนวนมากเช่น rmpi และ snow (ควบคุมโดยผู้ใช้) หรือ doMC / foreach (ตามระบบ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.