今回は、CQLを使ったアクセスを試みます。
package com.zomu.t;
import java.nio.charset.CharacterCodingException;
import me.prettyprint.cassandra.model.CqlQuery;
import me.prettyprint.cassandra.model.CqlRows;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.beans.Row;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.query.QueryResult;
/**
* CQLアクセステスト
* @author nozomu
*/
public class AccessTestCql {
/** 文字列シリアライザ */
private static StringSerializer stringSerializer = StringSerializer.get();
/**
*
* @param args
* @throws CharacterCodingException
*/
public static void main(String[] args) throws CharacterCodingException {
// クラスタ
Cluster cluster = HFactory.getOrCreateCluster("TestCluster",
"localhost:9160");
// 使用するKeySpace
Keyspace keyspaceOperator = HFactory.createKeyspace("Giraffe", cluster);
try {
// CQLクエリを発行するクラス
CqlQuery<String, String, String> cqlQuery = new CqlQuery<String, String, String>(
keyspaceOperator, stringSerializer, stringSerializer,
stringSerializer);
// CQLを設定
cqlQuery.setQuery("select * from CF where key = 'key'");
// 取得する
QueryResult> result = cqlQuery
.execute();
if (result != null) {
CqlRows rows = result.get();
if (rows != null) {
for (Row row : rows.getList()) {
for (HColumn col : row.getColumnSlice()
.getColumns()) {
System.out.println(col.getName() + " : "
+ col.getValue());
}
}
}
}
} catch (HectorException he) {
he.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}
}
CQLはこれからCassandraを使用する場合には必須となりそうな予感がする。
ObjectMapper等もHectorには用意してあるみたいなので、併せてこちらも試す事にしようと思う。
それはまた次回にでも。
0 件のコメント:
コメントを投稿