2012-04-11 8 views
7

का उपयोग कर कैसंड्रा में एक पंक्ति के सभी कॉलम पुनर्प्राप्त करें मैं कैसंड्रा और हेक्टर में नया हूं।हेक्टर क्लाइंट

मैं हेक्टर का उपयोग कर कैसंद्रा में एक पंक्ति के सभी कॉलम पुनर्प्राप्त करना चाहता हूं। वेब पर कुछ अन्वेषण के बाद मैं कुछ नमूना कोड मिल गया है, लेकिन यह सीमा या स्तंभ नाम की तरह की आवश्यकता है,,

SliceQuery<String,String,String> query = HFactory.createSliceQuery(keyspace, ss, ss, ss); 
    query.setColumnFamily("MyColumnFamily").setKey("S001").setRange(null, null, false, 100); 
    QueryResult<ColumnSlice<String,String>> result = query.execute(); 
    for (HColumn<String, String> column : result.get().getColumns()) { 
     System.out.println(column.getName() +"::"+ column.getValue()); 
    } 

यहाँ मैं setRange में रेंज() विधि है जो इस श्रेणी में स्तंभों को पुन: प्राप्त सेट करना होगा। हम इस विधि में प्रारंभ और अंत भी सेट कर सकते हैं, लेकिन यह विशेष सीमा के कॉलम भी देगा। अगर मैं रेंज सेट नहीं कर रहा हूं तो मुझे कॉलम नाम सरणी के रूप में देना होगा।

क्या कोई विशेष पंक्ति के सभी कॉलम प्राप्त करने का कोई तरीका है? मैं रेंज या कॉलम नाम सेट नहीं करना चाहता, मैं बस एक पंक्ति के सभी कॉलम चाहता हूं। क्योंकि मेरे आवेदन कॉलम में पूर्वनिर्धारित नहीं हैं।

या कोई पंक्ति की कुल कॉलम गिनती पाने का कोई तरीका है तो मैं इसे setRange() विधि में सेट कर सकता हूं?

धन्यवाद।

उत्तर

10

कुछ छोटी पंक्तियों के लिए ऐसा करने का तरीका setRange() विधि का उपयोग कर रहा है, ठीक उसी उदाहरण में इसका उपयोग कैसे किया जा रहा है। यदि आप सीमा के प्रारंभ और अंत पैरामीटर को शून्य पर सेट करते हैं, तो से प्राप्त करने की सीमा पूरी पंक्ति है।

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

इसके बजाय आप रेंज क्वेरी के लिए एक हेक्टर कॉलमस्लाइस इटरेटर बनाना चाहते हैं, जो आपको पंक्ति के लिए एक इटरेटर इंटरफ़ेस देगा और आपको एक ही समय में बहुत से कॉलम के बिना पूछे बिना पूरी पंक्ति के माध्यम से फिर से भरने की अनुमति देगा। इस पृष्ठ के निचले हिस्से में 'कॉलम इटरेशन' के तहत उदाहरण देखें:

https://github.com/rantav/hector/wiki/Getting-started-%285-minutes%29

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