2014-07-22 4 views
16

से बड़ी मात्रा में डेटा निर्यात करें मैं स्टोर के लिए बड़ी मात्रा में डेटा के लिए कैसंद्रा 2.0.9 का उपयोग कर रहा हूं, चलो एक कॉलम परिवार में 100 जीबी कहें। मैं इस डेटा को तेजी से सीएसवी में निर्यात करना चाहता हूं। मैंने कोशिश की: (। पूर्व 300MB डाटा फ़ाइल = ~ 2Gb json)कैसंड्रा से सीएसवी

  • sstable2json - उपकरण एक पंक्ति में डेटा डालता है और जटिल स्कीमा का उपयोग करता है क्योंकि, यह लेता है - यह काफी बड़ा json फ़ाइलें जो पार्स करने के लिए कड़ी मेहनत कर रहे हैं पैदा करता है बहुत समय डंप करने के लिए और कैसेंड्रा अपने आंतरिक तंत्र अनुसार स्रोत फ़ाइल नाम बदलने के लिए
  • कॉपी पसंद करती है - रिकॉर्ड
  • CAPTURE की बड़ी संख्या के लिए काफी तेजी से EC2 उदाहरणों पर समय समाप्ति का कारण बनता है - ऊपर की तरह, का कारण बनता है
  • टाइमआउट
  • पृष्ठांकन के साथ पढ़ता - मैं इसके लिए timeuuid इस्तेमाल किया है, लेकिन यह प्रति सेकंड

1,5k के बारे में रिकॉर्ड रिटर्न मैं तेजी से भंडारण के साथ अमेज़न EC2 उदाहरण का उपयोग, राम के 15 जीबी और 4 कोर

है कैसंद्रा से सीएसवी तक डेटा के निर्यात गीगाबाइट्स के लिए कोई बेहतर विकल्प है?

+0

क्या आपने इसके लिए अपना स्वयं का छोटा संकुचन करने पर विचार किया है? डेटास्टैक्स ड्राइवर का उपयोग करके आप आसानी से अनुरोध कर सकते हैं जो आपको डेटा निकालते हैं, फिर उन्हें सीएसवी फ़ाइल में क्रमबद्ध करें, बिना जावा कोड के छोटे से? यह सुनिश्चित करेगा कि आप सटीक परिणाम प्राप्त करें (हालांकि थोड़ा प्रयास करें)। – Ar3s

+0

इसके अलावा, मुझे न तो विधि और न ही "अंकन के साथ पढ़ता है" पर समस्या नहीं मिलती है। – Ar3s

+1

* पेजिंग के साथ पढ़ता है * - पायथन ड्राइवर का उपयोग करके मैंने सीमा का उपयोग करके सामग्री को पढ़ने की कोशिश की (परीक्षण मूल्य 100 - 10000, टाइमयूयूड पर आधारित) और ऑफ़सेट, यह वास्तव में धीमा था, कैसंद्रा प्रति सेकेंड के रिकॉर्ड के बारे में 1,5k पढ़ने में सक्षम था 3 उदाहरण और प्रतिकृति कारक 2 मैं कल्पना नहीं कर सकता, कि बस ड्राइवर का उपयोग करना तेजी से पढ़ने के लिए संभव बनाता है, क्योंकि प्रत्येक पंक्ति के लिए कैसंद्रा को जांचना होता है कि कौन सा नोड डेटा संग्रहीत किया जाता है। – KrzysztofZalasa

उत्तर

3

क्योंकि प्रति का उपयोग कर काफी चुनौतीपूर्ण है जब आप कैसेंड्रा से पंक्तियों के लाखों लोगों के साथ एक मेज निर्यात करने के लिए कोशिश कर रहे हैं, तो क्या मैंने किया है कैसेंड्रा मेज से हिस्सा (पृष्ठवार) द्वारा डेटा हिस्सा पाने के लिए आसान उपकरण बनाने के लिए है हो जाएगा और इसे सीएसवी को निर्यात करें।

डेटास्टैक्स से जावा लाइब्रेरी का उपयोग करके मेरे example solution पर देखें।

+0

कृपया एक पूर्ण उत्तर दें, न केवल एक लिंक – slfan

+0

जैसा कि मैंने पहले लिखा था: मैंने इस समाधान की कोशिश की, लेकिन यह बहुत धीमी थी - यह प्रति सेकेंड 1,5k रिकॉर्ड दे सकता है। क्या आपने प्रतिकृति सेट और 100 जीबी डेटा के लिए कोई बेंचमार्क किया था? – KrzysztofZalasa

+0

हमारे डेटासेट में सबसे बड़ी तालिका थी: 22 जीबी डेटा ~ 122 मिलीलीटर पंक्ति ~ 444m38.061s में निकाली गई। (1 होस्ट कैसंड्रा सर्वर 4core 8 जीबी राम सैटा एचडीडी का उपयोग करके) (जो पंक्तियों/सेकंड के लगभग 4.5k है, यह हमारे लिए काफी अच्छा है क्योंकि हम डेटा को कहीं और माइग्रेट करने के लिए करते हैं) –