में बड़ी मात्रा में डेटा प्रोसेसिंग मैं बहुत अच्छा आरडीबीएमएस अनुभव के साथ एक अजगर डेवलपर हूं। मुझे काफी बड़ी मात्रा में डेटा (लगभग 500 जीबी) संसाधित करने की आवश्यकता है। डेटा एस 3 बाल्टी में लगभग 1200 सीएसवी फाइलों में बैठा है। मैंने पायथन में एक स्क्रिप्ट लिखी है और इसे सर्वर पर चला सकता है। हालांकि, यह रास्ता बहुत धीमा है। वर्तमान गति के आधार पर और डेटा की मात्रा में सभी फ़ाइलों को प्राप्त करने में लगभग 50 दिन लगेंगे (और निश्चित रूप से, समय सीमा पहले से ठीक है)।समांतर
नोट: प्रसंस्करण आपके मूल ईटीएल प्रकार की सामग्री का प्रकार है - कुछ भी भयानक कल्पना नहीं है। मैं आसानी से पोस्टग्रेएसक्यूएल में एक अस्थायी स्कीमा में पंप कर सकता हूं, और उसके बाद स्क्रिप्ट चला सकता हूं। लेकिन, फिर से, मेरे प्रारंभिक परीक्षण से, यह धीमा करने का तरीका होगा।
नोट: एक नया नया PostgreSQL 9.1 डेटाबेस यह अंतिम गंतव्य होगा।
तो, मैं बैच (समानांतर में) चलाने और चलाने के लिए ईसी 2 उदाहरणों का एक गुच्छा फैलाने की कोशिश करने के बारे में सोच रहा था। लेकिन, मैंने पहले ऐसा कुछ नहीं किया है, इसलिए मैं विचारों के लिए चारों ओर देख रहा हूं, आदि।
फिर से, मैं एक अजगर डेवलपर हूं, इसलिए ऐसा लगता है कि फैब्रिक + बोटो वादा कर सकता है। मैंने समय-समय पर बोटो का उपयोग किया है, लेकिन फैब्रिक के साथ कभी भी कोई अनुभव नहीं है।
मुझे पढ़ने/शोध से पता है कि यह शायद हडोप के लिए एक अच्छा काम है, लेकिन मुझे यह नहीं पता है और इसे किराए पर लेने का जोखिम नहीं उठा सकता है, और समय रेखा सीखने की वक्र या भर्ती के लिए अनुमति नहीं देती है कोई व्यक्ति। मुझे यह भी नहीं करना चाहिए कि यह एक बार का सौदा है। तो, मुझे वास्तव में एक सुरुचिपूर्ण समाधान बनाने की आवश्यकता नहीं है। मुझे बस काम करने की आवश्यकता है और साल के अंत तक सभी डेटा प्राप्त करने में सक्षम होना चाहिए।
इसके अलावा, मुझे पता है कि यह एक साधारण स्टैक ओवरफ्लो-प्रकार का सवाल नहीं है (कुछ "मैं पाइथन में एक सूची को कैसे उलट सकता हूं")। लेकिन, मैं जो उम्मीद कर रहा हूं वह इसे पढ़ने के लिए है और "कहो, मैं कुछ ऐसा करता हूं और XYZ का उपयोग करता हूं ... यह बहुत अच्छा है!"
मुझे लगता है कि मैं क्या पूछ रहा हूं क्या कोई इस बात को पूरा करने के लिए उपयोग कर सकता है (यह देखते हुए कि मैं एक पायथन डेवलपर हूं और मुझे हैडोप या जावा नहीं पता है - और एक है तंग समयरेखा जो मुझे हडोप जैसी नई तकनीक सीखने या नई भाषा सीखने से रोकती है)
पढ़ने के लिए धन्यवाद। मैं किसी भी सुझाव के लिए तत्पर हूं।
कपड़े + Boto वास्तव में इस कार्य के लिए एक अच्छा संयोजन की तरह दिखता है। प्रत्येक उदाहरण पर कार्य को समानांतर करने के लिए भी उपयोगी हो सकता है (जब तक कि आप 1200 उदाहरण, प्रति फ़ाइल एक होने की उम्मीद नहीं कर रहे हों), शायद 'मल्टीप्रोसेसिंग' मॉड्यूल से 'पूल' का उपयोग करके। साथ ही, जिस तरह से आप फ़ाइल को पार्स करते हैं और परिणामों को संपादित करते हैं, शायद कुल समय में बहुत अधिक प्रभाव पड़ता है। क्या आपने 'numpy' में देखा है? – goncalopp
इसलिए कोई भी संभावित सुझाव दोहराने का प्रयास नहीं करता है - क्या आप वर्णन कर सकते हैं कि आपने अपनी मौजूदा स्क्रिप्ट में क्या किया है जो बहुत धीमा है - इसलिए हम जानते हैं कि उस मार्ग को नीचे नहीं जाना है :) –
@ जोनक्लेमेंट्स - एक उचित अनुरोध की तरह लगता है। मूल रूप से, मैंने दो दृष्टिकोणों की कोशिश की है। मैंने डेटा को एक अस्थायी स्कीमा में डालने और इसे अनुक्रमित करने की आवश्यकता है (आवश्यकतानुसार) और डेटा को "मालिश" करने के लिए इसके खिलाफ चल रहे प्रश्नों और इसे अनुरोधित प्रारूप में प्राप्त करने का प्रयास किया है। यह बहुत धीमा था क्योंकि मेरा मानना है कि इंडेक्स PostgreSQL कैश से कहीं अधिक बड़े थे। नोट: मेरे पास Heroku पर चल रहा एक छोटा PostgreSQL उदाहरण है। (अगली टिप्पणी में जारी रहेगा) –