http://rantav.github.com/hector/build/html/content/getting_started.html
https://github.com/zznate/hector-examples.git
private static final String DYN_KEYSPACE = "logdb";
private static final String DYN_CF = "user";
private static StringSerializer stringSerializer = StringSerializer.get();
private static LongSerializer longSerializer = LongSerializer.get();
private static Cluster cluster = HFactory.getOrCreateCluster(
"Test Cluster", "localhost:9160");
public static void createSchema() {
try {
if (cluster.describeKeyspace(DYN_KEYSPACE) != null) {
cluster.dropKeyspace(DYN_KEYSPACE);
}
// 字段操作
BasicColumnDefinition ageColumnDefinition = new BasicColumnDefinition();
ageColumnDefinition.setName(stringSerializer.toByteBuffer("age"));
ageColumnDefinition.setIndexName("age_idx");
ageColumnDefinition.setIndexType(ColumnIndexType.KEYS);
ageColumnDefinition.setValidationClass(ComparatorType.LONGTYPE
.getClassName());
// 字段操作
BasicColumnDefinition usernameColumnDefinition1 = new BasicColumnDefinition();
usernameColumnDefinition1.setName(stringSerializer
.toByteBuffer("username"));
usernameColumnDefinition1.setIndexName("username_idx");
usernameColumnDefinition1.setIndexType(ColumnIndexType.KEYS);
usernameColumnDefinition1
.setValidationClass(ComparatorType.UTF8TYPE.getClassName());
BasicColumnFamilyDefinition columnFamilyDefinition = new BasicColumnFamilyDefinition();
columnFamilyDefinition.setKeyspaceName(DYN_KEYSPACE);
columnFamilyDefinition.setName(DYN_CF);
columnFamilyDefinition.addColumnDefinition(ageColumnDefinition);
columnFamilyDefinition
.addColumnDefinition(usernameColumnDefinition1);
ColumnFamilyDefinition cfUser = new ThriftCfDef(
columnFamilyDefinition);
KeyspaceDefinition keyspaceDefinition = HFactory
.createKeyspaceDefinition(DYN_KEYSPACE,
"org.apache.cassandra.locator.SimpleStrategy", 1,
Arrays.asList(cfUser));
cluster.addKeyspace(keyspaceDefinition);
// insert some data
for (int i = 0; i < 1; i++) {
List<KeyspaceDefinition> keyspaces = cluster
.describeKeyspaces();
for (KeyspaceDefinition kd : keyspaces) {
if (kd.getName().equals(DYN_KEYSPACE)) {
System.out.println("Name: " + kd.getName());
System.out.println("RF: " + kd.getReplicationFactor());
System.out.println("strategy class: "
+ kd.getStrategyClass());
List<ColumnFamilyDefinition> cfDefs = kd.getCfDefs();
for (ColumnFamilyDefinition def : cfDefs) {
System.out.println(" CF Type: "
+ def.getColumnType());
System.out.println(" CF Name: " + def.getName());
System.out.println(" CF Metadata: "
+ def.getColumnMetadata());
}
}
}
}
} catch (HectorException he) {
he.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}
public static void operatioinDB() {
String value = "";
for (int i = 0; i < 10; i++) {
value = value + "x";
}
Keyspace keyspaceOperator = HFactory.createKeyspace("logdb", cluster);
try {
Mutator<String> userMutator = HFactory.createMutator(
keyspaceOperator, stringSerializer);
Long age = 1000L;
long start = System.currentTimeMillis();
for (long i = 0; i < 10000 * 10000; i++) {
userMutator.addInsertion("" + i, "user",
HFactory.createStringColumn("username", "小贩" + i))
.addInsertion(
"" + i,
"user",
HFactory.createColumn("age", i,
stringSerializer, longSerializer));
if (i % 500 == 0) {
System.out.println(i);
userMutator.execute();
}
}
userMutator.execute();
System.out.println("消耗毫秒:" + (System.currentTimeMillis() - start));
} catch (HectorException e) {
e.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}
public static void query() {
Keyspace keyspaceOperator = HFactory.createKeyspace("logdb", cluster);
long value = RandomUtils.nextInt(10000 * 1);
ColumnFamilyTemplate<String, String> columnFamilyTemplate = new ThriftColumnFamilyTemplate<String, String>(
keyspaceOperator, "user", stringSerializer, stringSerializer);
IndexedSlicesPredicate<String, String, Long> agePredicate = new IndexedSlicesPredicate<String, String, Long>(
stringSerializer, stringSerializer, longSerializer);
IndexedSlicesPredicate<String, String, String> usernamePredicate = new IndexedSlicesPredicate<String, String, String>(
stringSerializer, stringSerializer, stringSerializer);
usernamePredicate.addExpression("username", IndexOperator.EQ,
"小贩" + value).startKey("");
agePredicate.addExpression("age", IndexOperator.EQ, value).startKey("");
ColumnFamilyResult<String, String> list = columnFamilyTemplate
.queryColumns(usernamePredicate);
System.out.println(list.getString("username"));
list = columnFamilyTemplate.queryColumns(agePredicate);
System.out.println(list.getLong("age"));
// ======================================================================================
}
public static void query2() {
Keyspace keyspaceOperator = HFactory.createKeyspace("logdb", cluster);
long value = RandomUtils.nextInt(10000 * 1);
IndexedSlicesQuery<String, String, String> indexedSlicesQuery = HFactory
.createIndexedSlicesQuery(keyspaceOperator, stringSerializer,
stringSerializer, stringSerializer);
indexedSlicesQuery.addEqualsExpression("username", "小贩" + value);
indexedSlicesQuery.setColumnFamily("user");
indexedSlicesQuery.setStartKey("");
indexedSlicesQuery.setColumnNames("username", "age");
QueryResult<OrderedRows<String, String, String>> result = indexedSlicesQuery
.execute();
System.out.println(result.get());
}
public static void main(String[] args) throws Exception {
query2();
}