मैं हर 12 घंटे में अपने अमेज़ॅन ईसी 2 माइक्रो इंस्टेंस पर क्रॉन नौकरी चला रहा हूं। यह 118 एमबी फ़ाइल डाउनलोड करता है और जेसन लाइब्रेरी का उपयोग करके इसे पार करता है। यह निश्चित रूप से स्मृति को स्मृति से बाहर चलाता है। मेरे उदाहरण में 416 एमबी मेमोरी मुफ्त है लेकिन फिर मैं स्क्रिप्ट चलाता हूं जो इसे 6 एमबी तक गिर जाता है और फिर इसे ओएस द्वारा मारा जाता है।JSON पेलोड के 100 एमबी पार्स करने के लिए कुशल तरीका
मुझे आश्चर्य है कि मेरे विकल्प यहां क्या हैं? क्या रूबी के माध्यम से इसे कुशलता से पार्स करना संभव है या क्या मुझे सी जैसे निम्न स्तर की सामग्री में गिरावट है? मैं एक और अधिक सक्षम अमेज़ॅन उदाहरण प्राप्त कर सकता हूं लेकिन मैं वास्तव में जानना चाहता हूं कि रुबी के माध्यम से ऐसा करना संभव है या नहीं।
अद्यतन: मैंने यजल को देखा है। यह आपको जेसन ऑब्जेक्ट्स को पार्स के रूप में दे सकता है, लेकिन समस्या यह है कि, यदि आपकी JSON फ़ाइल में केवल 1 रूट ऑब्जेक्ट है, तो उसे सभी फ़ाइल को पार्स करने के लिए मजबूर किया जाएगा। मेरे JSON इस तरह दिखता है:
--Root
-Obj 1
-Obj 2
-Obj 3
तो अगर मैं करता हूँ:
parser.parse(file) do |hash|
#do something here
end
जब से मैं केवल 1 जड़ वस्तु है, यह पूरे JSON पार्स होगा। यदि Obj 1/2/3 रूट था, तो यह काम करेगा क्योंकि यह मुझे एक-एक करके देगा, लेकिन मेरा JSON ऐसा नहीं है और यह 500 एमबी मेमोरी को पार्स करता है और खाता है ...
अद्यतन # 2: यहाँ एक छोटे (7MB) बड़े 118mb फ़ाइल का संस्करण है:
चला
यह, मैं सिर्फ कुछ बाइट्स फ़ाइल से बंद नहीं लिया parseable है, बस इतना है कि आप एक यह रूप में देखते हैं पूरा। सरणी मैं देख रहा हूँ इस
events = json['resultsPage']['results']['event']
धन्यवाद
के रूप में json पार्स कर सकते हैं यह 6 या अधिक खंडों में डाउनलोड को विभाजित करने और फिर उन्हें वापस रख एक साथ संभव है? –
JSON टेक्स्ट का 100 एमबी? आप क्या स्टोर कर रहे हैं? अलेक्जेंड्रिया की पुस्तकालय? ': पी' –
आप इसके लिए JSON का उपयोग क्यों कर रहे हैं? नौकरी के लिए सही प्रारूप की तरह नहीं लगता है। कुछ और अधिक रिकॉर्ड उन्मुख (यहां तक कि सीएसवी) एक बेहतर मैच होगा। यदि आप प्रारूप को नियंत्रित नहीं कर सकते हैं तो हो सकता है कि आप रिकॉर्ड ऑब्जेक्ट JSON में प्रारूप को मजबूर करने के लिए रूट ऑब्जेक्ट को मैन्युअल रूप से बंद कर दें। –