2011-08-04 38 views
8

Tôi đang làm việc với Cassandra-0.8.2. tôi đang làm việc với phiên bản mới nhất của Hector & phiên bản java của tôi là 1.6.0_26Thông tin cơ bản về Hector & Cassandra

Tôi rất mới để Cassandra & Hector.

Những gì tôi đang cố gắng làm: 1. kết nối với một số & chạy phiên bản của cassandra trên một máy chủ khác. Tôi biết nó đang chạy b/c Tôi có thể ssh thông qua thiết bị đầu cuối của tôi vào máy chủ chạy trường hợp Cassandra này và chạy CLI với đầy đủ chức năng. 2. sau đó tôi muốn kết nối với một không gian phím & tạo một họ cột và sau đó thêm một giá trị cho gia đình cột đó thông qua Hector.

Tôi nghĩ rằng vấn đề của tôi là trường hợp chạy của Cassandra trên máy chủ này có thể không được cấu hình để nhận lệnh không phải cục bộ. Tôi nghĩ rằng bước tiếp theo của tôi sẽ được thêm một trường hợp địa phương của Cassandra trên cpu tôi đang làm việc trên và cố gắng làm điều này tại địa phương. Bạn nghĩ sao?

Dưới đây là mã Java của tôi:

import me.prettyprint.cassandra.serializers.StringSerializer; 
import me.prettyprint.cassandra.service.CassandraHostConfigurator; 
import me.prettyprint.hector.api.Cluster; 
import me.prettyprint.hector.api.Keyspace; 
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition; 
import me.prettyprint.hector.api.ddl.ComparatorType; 
import me.prettyprint.hector.api.factory.HFactory; 
import me.prettyprint.hector.api.mutation.Mutator; 

    public class MySample { 


     public static void main(String[] args) { 


      Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", "xxx.xxx.x.41:9160"); 
      Keyspace keyspace = HFactory.createKeyspace("apples", cluster); 
      ColumnFamilyDefinition cf = HFactory.createColumnFamilyDefinition("apples","ColumnFamily2",ComparatorType.UTF8TYPE); 
      StringSerializer stringSerializer = StringSerializer.get(); 
      Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer); 
      mutator.insert("jsmith", "Standard1", HFactory.createStringColumn("first", "John")); 
} 
} 

ERROR của tôi là:

16:22:19,852 INFO CassandraHostRetryService:37 - Downed Host Retry service started with queue size -1 and retry delay 10s 
16:22:20,136 INFO JmxMonitor:54 - Registering JMX me.prettyprint.cassandra.service_Test Cluster:ServiceType=hector,MonitorType=hector 
Exception in thread "main" me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:Keyspace apples does not exist) 
    at me.prettyprint.cassandra.connection.HThriftClient.getCassandra(HThriftClient.java:70) 
    at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:226) 
    at me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(KeyspaceServiceImpl.java:131) 
    at me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(KeyspaceServiceImpl.java:102) 
    at me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(KeyspaceServiceImpl.java:108) 
    at me.prettyprint.cassandra.model.MutatorImpl$3.doInKeyspace(MutatorImpl.java:222) 
    at me.prettyprint.cassandra.model.MutatorImpl$3.doInKeyspace(MutatorImpl.java:219) 
    at me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(KeyspaceOperationCallback.java:20) 
    at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(ExecutingKeyspace.java:85) 
    at me.prettyprint.cassandra.model.MutatorImpl.execute(MutatorImpl.java:219) 
    at me.prettyprint.cassandra.model.MutatorImpl.insert(MutatorImpl.java:59) 
    at org.cassandra.examples.MySample.main(MySample.java:25) 
Caused by: InvalidRequestException(why:Keyspace apples does not exist) 
    at org.apache.cassandra.thrift.Cassandra$set_keyspace_result.read(Cassandra.java:5302) 
    at org.apache.cassandra.thrift.Cassandra$Client.recv_set_keyspace(Cassandra.java:481) 
    at org.apache.cassandra.thrift.Cassandra$Client.set_keyspace(Cassandra.java:456) 
    at me.prettyprint.cassandra.connection.HThriftClient.getCassandra(HThriftClient.java:68) 
    ... 11 more 

Cảm ơn bạn trước sự giúp đỡ của bạn.

+0

Bạn có nhận thấy 'Táo phím không tồn tại' ?. – Mat

Trả lời

8

Trường hợp ngoại lệ bạn đang nhận được là,

why:Keyspace apples does not exist 

Trong code của bạn, dòng này không thực sự tạo ra keyspace,

Keyspace keyspace = HFactory.createKeyspace("apples", cluster); 

Như đã trình bày here, đây là mã bạn cần phải xác định keyspace của bạn,

ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition("MyKeyspace", "ColumnFamilyName", ComparatorType.BYTESTYPE); 

KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition("MyKeyspace", ThriftKsDef.DEF_STRATEGY_CLASS, replicationFactor, Arrays.asList(cfDef)); 

// Add the schema to the cluster. 
// "true" as the second param means that Hector will block until all nodes see the change. 
cluster.addKeyspace(newKeyspace, true); 
+0

Cảm ơn bạn đã phản hồi. Vấn đề của tôi là replicationFactor dường như không xác định khi tôi cố gắng chạy mã này. Tôi đã sao chép chính xác nội dung được viết ở đây: https: //github.com/rantav/hector/wiki/Getting-started-%285-minutes%29, với các biến tên thích hợp đã thay đổi. Bất kỳ ý tưởng tại sao "replicationFactor" là không xác định? Không có gì khác để tôi nhập vào lớp này. – Henry

+0

bạn đang gặp lỗi trình biên dịch? bạn có thể thêm dòng int replicationfactor = 1; – sbridges

+0

Cảm ơn tôi đã tìm ra vấn đề của mình! – Henry

Các vấn đề liên quan