2012-01-30 11 views
8

एक बार सीएसवी read.csv के माध्यम से लोड हो जाने के बाद, सीएसवी में डेटा के साथ खेलने के लिए multicore, segue आदि का उपयोग करना काफी मुश्किल है। हालांकि, इसे पढ़ने में काफी समय लगता है।आर: क्या 20 मिलियन से अधिक पंक्ति सीएसवी में आर को पढ़ने के लिए समानांतर/गति-अप करना संभव है?

एहसास इसका इस्तेमाल लिए MySQL आदि आदि

एक एडब्ल्यूएस 8xl के उपयोग मान लें बेहतर है गणना उदाहरण R2.13

चल क्लस्टर

चश्मा इस प्रकार है:

Cluster Compute Eight Extra Large specifications: 
88 EC2 Compute Units (Eight-core 2 x Intel Xeon) 
60.5 GB of memory 
3370 GB of instance storage 
64-bit platform 
I/O Performance: Very High (10 Gigabit Ethernet) 

किसी भी विचार/विचारों बहुत सराहना की।

+0

यह प्रश्न आपके लिए भी दिलचस्प हो सकता है: http://stackoverflow.com/questions/9061736/faster-than-scan-with-rcpp –

+0

या यह भी एक साथ http://stackoverflow.com/questions/1727772/जल्दी-पढ़ने-बहुत-बड़े-टेबल-जैसे-डेटाफ्रेम-इन-आर –

उत्तर

2

आप क्या कर सकते हैं scan का उपयोग करें। इसके दो इनपुट तर्क दिलचस्प साबित हो सकते हैं: n और skip। आप फ़ाइल से दो या दो से अधिक कनेक्शन खोलते हैं और फ़ाइल से पढ़ने के लिए इच्छित भाग का चयन करने के लिए skip और n का उपयोग करें। कुछ चेतावनी हैं:

  • कुछ चरण डिस्क में मैं बोतल की गर्दन साबित कर सकता हूं।
  • मुझे आशा है कि उसी फ़ाइल में एकाधिक कनेक्शन खोलते समय स्कैन शिकायत नहीं करता है।

लेकिन आप इसे आज़मा सकते हैं और देख सकते हैं कि यह आपकी गति को बढ़ावा देता है या नहीं।

2

फ़्लैश या पारंपरिक एचडी स्टोरेज? यदि उत्तरार्द्ध, तो यदि आप नहीं जानते कि फ़ाइल ड्राइव पर कहां है, और यह कैसे विभाजित है, तो चीजों को गति देना बहुत मुश्किल है क्योंकि एकाधिक एक साथ पढ़ने से एक स्ट्रीम पढ़ने से तेज़ नहीं होगा। यह डिस्क की वजह से है, सीपीयू नहीं। फ़ाइल के भंडारण स्तर को शुरू किए बिना समानांतर करने का कोई तरीका नहीं है।

यदि यह फ्लैश स्टोरेज है तो पॉल हायमस्ट्रा की तरह एक समाधान मदद कर सकता है क्योंकि अच्छे फ्लैश स्टोरेज में अनुक्रमिक के करीब उत्कृष्ट यादृच्छिक पढ़ने का प्रदर्शन हो सकता है। इसे आज़माएं ... लेकिन अगर यह आपको मदद करने में मदद नहीं कर रहा है क्यों।

इसके अलावा ... एक तेज़ स्टोरेज इंटरफेस का मतलब यह नहीं है कि ड्राइव इसे संतृप्त कर सकती है। क्या आपने ड्राइव पर प्रदर्शन परीक्षण चलाया है यह देखने के लिए कि वे वास्तव में कितनी तेजी से हैं?

5

यदि आप freaddata.table में fread का उपयोग करते हैं तो समांतर जाकर आवश्यकता नहीं हो सकती है।

library(data.table) 
dt <- fread("myFile.csv") 

इस question पर एक टिप्पणी इसकी शक्ति को दर्शाती है। यहां भी मेरे अपने अनुभव से एक उदाहरण दिया गया है:

d1 <- fread('Tr1PointData_ByTime_new.csv') 
Read 1048575 rows and 5 (of 5) columns from 0.043 GB file in 00:00:09 

मैं 10 के तहत 1.04 मिलियन पंक्तियों में पढ़ने में सक्षम था!

+0

नमस्ते, क्या यह एकाधिक फ़ाइल के समानांतर में फ्रेड के लायक है? डिस्क एक्सेस सीमा के कारण यह है? – Boris

+0

हाय बोरिस, मैं सुझाव दूंगा कि आप अपनी समस्या के साथ एक नया प्रश्न पोस्ट करें। उत्तर इस बात पर निर्भर करता है कि आपको कितनी मेमोरी चाहिए, आपकी फाइलों का आकार, और आप क्या करने की कोशिश कर रहे हैं। इसके अलावा, क्या आप स्मृति या सीपीयू सीमित हैं? –

संबंधित मुद्दे