2012-02-06 24 views
11

में कीपस्पेस पर पंक्ति डालें, मैं जावा और हेक्टर के साथ अपाचे कैसंद्रा संस्करण 0.7.6 का अध्ययन कर रहा हूं, और मैंने क्लस्टर, एक कीस्पेस बनाने और इस कुंजीपटल में बनाए गए कॉलम को डालने का प्रयास किया।अपाचे कैसंड्रा + हेक्टर + जावा

उदाहरण देखकर मैं समझ गया कि किस्पेस एसक्यूएल डेटाबेस में डेटाबेस के बराबर है, और कॉलम परिवार टेबल के बराबर है। यह जानकर मैंने अपनी सरल उदाहरण संरचना बनाने की कोशिश की।

Cluster tutorialCluster = HFactory.getOrCreateCluster("TutorialCluster", 
      "127.0.0.1:9160"); 
ConfigurableConsistencyLevel ccl = new ConfigurableConsistencyLevel(); 

ccl.setDefaultReadConsistencyLevel(HConsistencyLevel.ONE); 

Keyspace tutorialKeyspace = HFactory.createKeyspace("Tutorial", tutorialCluster, 
      ccl); 
Mutator<String> mutator = HFactory.createMutator(tutorialKeyspace, 
      stringSerializer); 

mutator.addInsertion("CA Burlingame", "StateCity", HFactory.createColumn(650L, "37.57x122.34", longSerializer, stringSerializer)); 

MutationResult mr = mutator.execute(); 

लेकिन जब मैंने इसे चलाने की कोशिश की, तो कैसंद्रा शुरू हुआ, लेकिन यह एक अपवाद देता है।

Exception in thread "main" me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:Keyspace Tutorial does not exist) 
at me.prettyprint.cassandra.connection.HThriftClient.getCassandra(HThriftClient.java:70) 
at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:226) 

लेकिन मैंने पहले से ही "ट्यूटोरियल" कुंजीपटल बनाया है, और म्यूटेटर में उपयोग किया है।

कोई मुझे बता सकता है कि मुझे क्या गलत है?

अग्रिम

उत्तर

6

HFactory में createKeyspace() कॉल धन्यवाद स्थानीय उपयोग के लिए एक हेक्टर Keyspace वस्तु बनाने के लिए है, लेकिन यह वास्तव में कैसेंड्रा में एक keyspace नहीं बनाता है। इसके लिए आप वास्तविक क्लस्टर ऑब्जेक्ट पर 'addKeyspace()' और 'addColumnFamily' विधियों का उपयोग करना चाहते हैं।

https://github.com/rantav/hector/blob/master/core/src/main/java/me/prettyprint/hector/api/Cluster.java#L117