【发布时间】:2014-03-25 03:24:15
【问题描述】:
我有一个 cassandra 单节点运行,其下的键空间和列族很少。我想使用 JAVA - THRIFT API 与他们联系。我成功地描述了 cluster_name/cluster_version/etc。我想连接到它下面的键空间和列族。
我当前的java代码如下:
import org.apache.cassandra.thrift.*;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.*;
import org.apache.thrift.transport.*;
import java.io.UnsupportedEncodingException;
import java.lang.*;
import java.nio.ByteBuffer;
public class ShowKeyspaces {
public static void main(String args[]) throws TException, InvalidRequestException, UnavailableException, UnsupportedEncodingException, NotFoundException {
TTransport tr = new TFramedTransport(new TSocket("localhost", 9160));
TProtocol proto = new TBinaryProtocol(tr);
tr.open();
Cassandra.Client client = new Cassandra.Client(proto);
System.out.println("Version : "+client.describe_version());
System.out.println("cluster name : "+client.describe_cluster_name());
for ( KsDef keyspace: client.describe_keyspaces() )
{
System.out.println("keyspace " +keyspace);
}
client.set_keyspace("demodb");
tr.close();
}
}
关于锄头的任何建议我可以进一步访问列族吗?
【问题讨论】:
-
强烈建议使用其中一种 java 客户端库,例如 DataStax CQL 驱动程序、Hector 或 Astyanax。它们提供了许多必要的功能(故障转移、重试、连接池)并且使用起来更简单。
-
我同意理查德的观点。我们使用的是 Hector,最近我们迁移到了 datastax java-driver(github.com/datastax/java-driver)
-
好的.. 非常感谢。我也开始使用 datastax。