Python เหมาะสำหรับข้อมูลขนาดใหญ่หรือไม่


14

ผมอ่านในโพสต์นี้คือภาษา R ที่เหมาะสมสำหรับข้อมูลขนาดใหญ่ที่ถือว่าข้อมูลขนาดใหญ่5TBและในขณะที่มันไม่ได้งานที่ดีในการให้ข้อมูลเกี่ยวกับความเป็นไปได้ของการทำงานกับชนิดของข้อมูลในนี้ก็มีข้อมูลน้อยมากเกี่ยวกับR Pythonฉันสงสัยว่าPythonสามารถทำงานกับข้อมูลจำนวนมากเช่นนี้ได้หรือไม่

คำตอบ:


18

เพื่อความกระจ่างแจ้งฉันรู้สึกว่าการอ้างอิงคำถามดั้งเดิมโดย OP อาจไม่ดีที่สุดสำหรับรูปแบบ SO-type แต่ฉันจะเป็นตัวแทนpythonในกรณีนี้โดยเฉพาะ

ผมขอเริ่มด้วยการบอกว่าไม่ว่าขนาดข้อมูลของคุณpythonจะเป็นปัจจัย จำกัด ของคุณ ในความเป็นจริงมีเพียงสองประเด็นสำคัญที่คุณจะต้องจัดการกับชุดข้อมูลขนาดใหญ่:

  • การอ่านข้อมูลในหน่วยความจำ - นี่เป็นปัญหาที่พบบ่อยที่สุดในโลกของข้อมูลขนาดใหญ่ โดยทั่วไปคุณไม่สามารถอ่านข้อมูลได้มากกว่าที่คุณมีหน่วยความจำ (RAM) วิธีที่ดีที่สุดในการแก้ไขปัญหานี้คือการดำเนินการปรมาณูในข้อมูลของคุณแทนที่จะพยายามอ่านทุกอย่างในครั้งเดียว
  • การจัดเก็บข้อมูล - นี่เป็นอีกรูปแบบหนึ่งของปัญหาก่อนหน้านี้ตามเวลาที่จะต้องทำ1TBคุณเริ่มมองหาที่เก็บข้อมูลที่อื่น AWS S3 เป็นทรัพยากรที่พบได้บ่อยที่สุดและpythonมีbotoห้องสมุดที่ยอดเยี่ยมเพื่ออำนวยความสะดวกในการนำข้อมูลจำนวนมาก
  • เวลาแฝงของเครือข่าย - การย้ายข้อมูลไปมาระหว่างบริการต่างๆจะเป็นคอขวดของคุณ มีจำนวนไม่มากที่คุณสามารถทำได้เพื่อแก้ไขปัญหานี้นอกเหนือจากการพยายามเลือกทรัพยากรที่อยู่ร่วมกันและเสียบเข้ากับกำแพง

13

มีสองสิ่งที่คุณต้องเข้าใจเมื่อจัดการกับ Big data -

ข้อมูลขนาดใหญ่คืออะไร

คุณอาจจะทราบว่า V ของข้อมูลขนาดใหญ่ที่มีชื่อเสียง - ปริมาณ, ความเร็ว, ความหลากหลาย ... ดังนั้น Python อาจไม่เหมาะสำหรับทุกคน และไปพร้อมกับเครื่องมือวิทยาศาสตร์ข้อมูลทั้งหมดที่มี คุณต้องรู้ว่าเครื่องมือใดดีสำหรับวัตถุประสงค์อะไร

หากจัดการกับข้อมูลจำนวนมาก:

  • Pig / Hive / Shark - การทำความสะอาดข้อมูลและการทำงานของ ETL
  • Hadoop / Spark - กระจายการคำนวณแบบขนาน
  • Mahout / ML-Lib - การเรียนรู้ของเครื่อง

ตอนนี้คุณสามารถใช้ R / Python ในขั้นตอนกลางได้ แต่คุณจะรู้ว่ามันกลายเป็นคอขวดในกระบวนการทั้งหมดของคุณ

หากจัดการกับ Velocity of data:

  • Kafka / Storm - ระบบปริมาณงานสูง

ผู้คนพยายาม R / Python ที่นี่ แต่อีกครั้งมันขึ้นอยู่กับชนิดของการขนานที่คุณต้องการและความซับซ้อนของแบบจำลองของคุณ

คุณต้องการวิเคราะห์แบบใด

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

ข้อสรุป

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

เครื่องมือของคุณไม่ควรกำหนดวิธีตอบคำถาม คำถามของคุณควรกำหนดเครื่องมือที่คุณใช้


8

Python มีเครื่องมือที่ดีมากสำหรับการทำงานกับข้อมูลขนาดใหญ่:

numpy

อาร์เรย์ memmory-mapped ของ Numpy ช่วยให้คุณเข้าถึงไฟล์ที่บันทึกไว้ในดิสก์ราวกับว่าเป็นอาร์เรย์ เฉพาะส่วนต่าง ๆ ของอาเรย์ที่คุณกำลังทำงานด้วยจำเป็นต้องโหลดเข้าสู่หน่วยความจำ มันสามารถใช้งานได้เหมือนกันกับอาเรย์ทั่วไป

h5py และ pytables

ทั้งสองไลบรารีให้การเข้าถึงไฟล์ HDF5 ไฟล์เหล่านี้อนุญาตให้เข้าถึงเพียงส่วนหนึ่งของข้อมูล นอกจากนี้ต้องขอบคุณห้องสมุดพื้นฐานที่ใช้ในการเข้าถึงข้อมูลการดำเนินการทางคณิตศาสตร์และการจัดการข้อมูลอื่น ๆ สามารถทำได้โดยไม่ต้องโหลดลงในโครงสร้างข้อมูลหลาม ไฟล์ขนาดใหญ่ที่มีโครงสร้างสูงเป็นไปได้ซึ่งมีขนาดใหญ่กว่า 5 TB นอกจากนี้ยังช่วยให้การบีบอัดข้อมูลราบรื่นและไม่มีการสูญเสีย

ฐานข้อมูล

มีฐานข้อมูลหลายประเภทที่ให้คุณจัดเก็บชุดข้อมูลขนาดใหญ่และโหลดเฉพาะส่วนที่คุณต้องการ ฐานข้อมูลจำนวนมากอนุญาตให้คุณทำการปรับเปลี่ยนโดยไม่ต้องโหลดข้อมูลลงในโครงสร้างข้อมูลหลามเลย

หมีแพนด้า

ทำให้สามารถเข้าถึงข้อมูลประเภทต่าง ๆ ได้ในระดับสูงขึ้นรวมถึงข้อมูล HDF5, ไฟล์ csv, ฐานข้อมูลหรือแม้แต่เว็บไซต์ สำหรับข้อมูลขนาดใหญ่จะให้การล้อมรอบการเข้าถึงไฟล์ HDF5 ที่ทำให้การวิเคราะห์ชุดข้อมูลขนาดใหญ่ทำได้ง่ายขึ้น

mpi4py

นี่เป็นเครื่องมือสำหรับรันโค้ดไพ ธ อนของคุณในแบบกระจายข้ามโปรเซสเซอร์หลายตัวหรือแม้แต่คอมพิวเตอร์หลายเครื่อง สิ่งนี้ช่วยให้คุณสามารถทำงานกับส่วนต่าง ๆ ของข้อมูลของคุณได้พร้อมกัน

dask

มันมีเวอร์ชันของอาร์เรย์ numpy ปกติที่รองรับการทำงานของ numpy ปกติจำนวนมากในลักษณะมัลติคอร์ที่สามารถทำงานกับข้อมูลที่มีขนาดใหญ่เกินไปที่จะใส่ลงในหน่วยความจำ

เปลวไฟ

เครื่องมือที่ออกแบบมาสำหรับข้อมูลขนาดใหญ่โดยเฉพาะ โดยทั่วไปแล้วมันเป็น wrapper รอบ ๆ ไลบรารีด้านบนซึ่งมีอินเตอร์เฟสที่สอดคล้องกับความหลากหลายของวิธีการเก็บข้อมูลจำนวนมาก (เช่น HDF5 หรือฐานข้อมูล) และเครื่องมือเพื่อให้ง่ายต่อการจัดการดำเนินการทางคณิตศาสตร์และวิเคราะห์ข้อมูลที่ ใหญ่เกินไปที่จะใส่ในหน่วยความจำ


4

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


3

เพื่อจัดการกับจำนวนข้อมูลดังกล่าวภาษาการเขียนโปรแกรมไม่ใช่ประเด็นหลัก แต่เป็นกรอบการเขียนโปรแกรม กรอบงานเช่น MapReduce หรือ Spark มีการเชื่อมโยงกับหลายภาษารวมถึง Python เฟรมเวิร์กเหล่านี้มีแพ็คเกจสำเร็จรูปมากมายสำหรับงานวิเคราะห์ข้อมูล แต่ในที่สุดมันก็มาถึงความต้องการของคุณเช่นงานของคุณคืออะไร? คนมีคำจำกัดความที่แตกต่างกันของงานการวิเคราะห์ข้อมูลบางคนสามารถแก้ไขได้อย่างง่ายดายด้วยฐานข้อมูลเชิงสัมพันธ์ ในกรณีนั้น SQL นั้นดีกว่าตัวเลือกอื่นทั้งหมด


2

ฉันเชื่อว่าภาษามีความสามารถในการปฏิบัติงานน้อยมากเมื่อพูดถึงข้อมูลขนาดใหญ่ สิ่งที่สำคัญคือ:

  • ข้อมูลมีขนาดใหญ่เพียงใด
  • คุณกำลังจะดำเนินการประมวลผลอะไร
  • คุณจะใช้ฮาร์ดแวร์อะไร
  • ซึ่งเป็นไลบรารีเฉพาะที่คุณวางแผนที่จะใช้

อย่างไรก็ตาม Python ได้รับการยอมรับอย่างดีในชุมชนวิทยาศาสตร์ข้อมูล


2

ฉันใช้ Anaconda Python 3.4 และ Pandas เพื่อค้นหาฐานข้อมูลแถว 10M เพื่อให้ตรงกับ 20K ของข้อมูลรับรองการเข้าสู่ระบบ ใช้เวลาประมาณหนึ่งนาที ภายในหมีแพนด้าใช้ประโยชน์จากหน่วยความจำได้อย่างยอดเยี่ยม ที่กล่าวว่าข้อมูลขนาดใหญ่อย่างแท้จริงต้องการสถาปัตยกรรมการประมวลผลที่ตรงกับปัญหา นุ่นเป็นเพียงกาว (ตรรกะ) ในสมการนี้และเครื่องมืออื่น ๆ ก็สามารถทำได้เช่นกัน R, Scala, Haskell, SAS และอื่น ๆ สามารถทำซ้ำตรรกะบางอย่าง - อาจเพียงพอที่จะตอบคำถามได้เร็วขึ้น แต่หลามทำให้เครื่องมือเอนกประสงค์ที่ดี (ดีที่สุด?) คุณสามารถเรียกใช้รหัส R ในหลามเช่นเดียวกับภาษาอื่น ๆ ส่วนใหญ่ แม้ว่าการตีความจะมีเทคนิคและเครื่องมือประสิทธิภาพสูงเช่น pypy ที่สามารถทำให้ python ทำงานได้เกือบเร็วเท่ากับเครื่องมือมาตรฐานที่มีความพยายามเพียงเล็กน้อยเท่านั้น และไพ ธ อนมีห้องสมุดมากมายที่ทำทุกอย่างได้ - ดูรายการด้านบน

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


0

มันเป็นเรื่องตลกที่คนผสมข้อมูลขนาดใหญ่เข้ากับศาสตร์ข้อมูลและระบบธุรกิจอัจฉริยะ

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

ดังนั้นเพื่อประมวลผลข้อมูลขนาดใหญ่เราจำเป็นต้องมีความเร็ว Python อยู่นอกลีกดังนั้นอาร์อย่างไรก็ตามถ้างานง่ายเหมือนการเอา CSV และแทรกลงในฐานข้อมูลนั่นก็คือ ETL เราไม่จำเป็นต้องเขียนโปรแกรมเพื่อทำสิ่งนั้น

และเมื่อข้อมูลลดลงเราก็สามารถใช้ python, r หรืออะไรก็ได้ที่คุณต้องการ แม้แต่ Excel อย่างไรก็ตามในระยะนี้ข้อมูลขนาดใหญ่ไม่ใหญ่อีกต่อไป แต่เป็นข้อมูลทั่วไป

IMHO, Java เหมาะสำหรับ Big Data (สำหรับทั้งเครือข่าย) แต่ผู้คนใช้ Python เป็นค่าเริ่มต้นด้วยเหตุผลบางประการที่ไม่สามารถทำได้

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