คำถามติดแท็ก hdf5

16
กระแสงาน“ ข้อมูลขนาดใหญ่” โดยใช้แพนด้า
ฉันพยายามไขปริศนาคำตอบสำหรับคำถามนี้เป็นเวลาหลายเดือนในขณะที่เรียนรู้แพนด้า ฉันใช้ SAS สำหรับงานประจำวันของฉันและมันยอดเยี่ยมสำหรับการสนับสนุนนอกหลัก อย่างไรก็ตาม SAS นั้นน่ากลัวเหมือนชิ้นส่วนของซอฟต์แวร์ด้วยเหตุผลอื่น ๆ อีกมากมาย วันหนึ่งฉันหวังว่าจะเปลี่ยนการใช้ SAS ของฉันเป็น python และ pandas แต่ตอนนี้ฉันขาดเวิร์กโฟลว์นอกหลักสำหรับชุดข้อมูลขนาดใหญ่ ฉันไม่ได้พูดถึง "ข้อมูลขนาดใหญ่" ที่ต้องใช้เครือข่ายแบบกระจาย แต่ไฟล์ใหญ่เกินไปที่จะใส่ในหน่วยความจำ แต่เล็กพอที่จะใส่ลงในฮาร์ดไดรฟ์ ความคิดแรกของฉันคือการใช้HDFStoreเพื่อเก็บชุดข้อมูลขนาดใหญ่บนดิสก์และดึงเฉพาะส่วนที่ฉันต้องการลงใน dataframes สำหรับการวิเคราะห์ คนอื่น ๆ พูดถึง MongoDB ว่าเป็นทางเลือกที่ใช้งานง่ายกว่า คำถามของฉันคือ: ขั้นตอนการปฏิบัติที่ดีที่สุดสำหรับการทำสิ่งต่อไปนี้คืออะไร: การโหลดไฟล์แฟล็ตไปยังโครงสร้างฐานข้อมูลถาวรบนดิสก์ การสืบค้นฐานข้อมูลนั้นเพื่อดึงข้อมูลไปยังฟีดลงในโครงสร้างข้อมูลแพนด้า การอัพเดตฐานข้อมูลหลังจากจัดการกับชิ้นส่วนในนุ่น ตัวอย่างในโลกแห่งความเป็นจริงจะได้รับการชื่นชมอย่างมากโดยเฉพาะจากใครก็ตามที่ใช้หมีแพนด้ากับ "ข้อมูลขนาดใหญ่" แก้ไข - ตัวอย่างของวิธีที่ฉันต้องการให้ทำงาน: ทำซ้ำนำเข้าไฟล์แฟล็ตขนาดใหญ่และเก็บไว้ในโครงสร้างฐานข้อมูลถาวรบนดิสก์ โดยทั่วไปไฟล์เหล่านี้ใหญ่เกินไปที่จะใส่ในหน่วยความจำ ในการใช้ Pandas ฉันต้องการอ่านชุดย่อยของข้อมูลนี้ (โดยปกติจะมีคอลัมน์ไม่กี่คอลัมน์ในเวลาเดียวกัน) ที่สามารถใส่ในหน่วยความจำได้ ฉันจะสร้างคอลัมน์ใหม่โดยดำเนินการต่าง ๆ ในคอลัมน์ที่เลือก ฉันจะต้องผนวกคอลัมน์ใหม่เหล่านี้ลงในโครงสร้างฐานข้อมูล …

1
มีความเร็วในการวิเคราะห์หรือข้อได้เปรียบในการใช้หน่วยความจำในการใช้ HDF5 สำหรับการจัดเก็บอาร์เรย์ขนาดใหญ่ (แทนที่จะเป็นไฟล์ไบนารีแบบแบน) หรือไม่
ฉันกำลังประมวลผลอาร์เรย์ 3 มิติขนาดใหญ่ซึ่งฉันมักจะต้องแบ่งส่วนด้วยวิธีต่างๆเพื่อทำการวิเคราะห์ข้อมูลที่หลากหลาย "คิวบ์" ทั่วไปสามารถมีขนาด ~ 100GB (และมีแนวโน้มที่จะใหญ่ขึ้นในอนาคต) ดูเหมือนว่ารูปแบบไฟล์ที่แนะนำโดยทั่วไปสำหรับชุดข้อมูลขนาดใหญ่ใน python คือการใช้ HDF5 (h5py หรือ pytables) คำถามของฉันคือความเร็วหรือประโยชน์ในการใช้หน่วยความจำในการใช้ HDF5 เพื่อจัดเก็บและวิเคราะห์คิวบ์เหล่านี้ผ่านการจัดเก็บไว้ในไฟล์ไบนารีแบบแบนธรรมดาหรือไม่ HDF5 เหมาะสมกว่าสำหรับข้อมูลแบบตารางเมื่อเทียบกับอาร์เรย์ขนาดใหญ่เช่นที่ฉันกำลังทำงานอยู่หรือไม่ ฉันเห็นว่า HDF5 สามารถบีบอัดข้อมูลได้ดี แต่ฉันสนใจเรื่องความเร็วในการประมวลผลและจัดการกับหน่วยความจำล้นมากกว่า ฉันมักต้องการวิเคราะห์เพียงชุดย่อยขนาดใหญ่เพียงชุดเดียว ข้อเสียเปรียบอย่างหนึ่งของทั้ง pytables และ h5py คือเมื่อฉันใช้อาร์เรย์ส่วนหนึ่งฉันมักจะได้อาร์เรย์ที่เป็นตัวเลขกลับมาโดยใช้หน่วยความจำหมด อย่างไรก็ตามหากฉันหั่น memmap ที่เป็นตัวเลขของไฟล์ไบนารีแบบแบนฉันจะได้รับมุมมองซึ่งเก็บข้อมูลไว้ในดิสก์ ดังนั้นดูเหมือนว่าฉันสามารถวิเคราะห์ส่วนที่เฉพาะเจาะจงของข้อมูลได้ง่ายขึ้นโดยไม่ต้องใช้หน่วยความจำมากเกินไป ฉันได้สำรวจทั้ง pytables และ h5py แล้วและยังไม่เห็นประโยชน์จากจุดประสงค์ของฉัน
97 python  numpy  hdf5  pytables  h5py 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.