Skip to content

Commit

Permalink
initial add of project files
Browse files Browse the repository at this point in the history
  • Loading branch information
zznate committed Jun 18, 2010
1 parent 2ff07a6 commit 222006f
Show file tree
Hide file tree
Showing 16 changed files with 741 additions and 0 deletions.
8 changes: 8 additions & 0 deletions README.mdown
@@ -0,0 +1,8 @@
# Overview
Provides example classes for using Hector to access Apache Cassandra

The classes in com.vrvm.cassandra.hector.example package can all be executed
from maven via the following command:
mvn -e exec:java -Dexec.mainClass="com.vrvm.cassandra.hector.example.[class name]"

These classes assume you have an instance of Cassandra running on localhost:9160 with the default configuration.
Binary file added lib/apache-cassandra-0.6.0.jar
Binary file not shown.
Binary file added lib/cassandra-javautils.jar
Binary file not shown.
Binary file added lib/clhm-production.jar
Binary file not shown.
Binary file added lib/hector-0.6.0-15.jar
Binary file not shown.
Binary file added lib/high-scale-lib.jar
Binary file not shown.
Binary file added lib/libthrift-r917130.jar
Binary file not shown.
203 changes: 203 additions & 0 deletions pom.xml
@@ -0,0 +1,203 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.vrvm.cassandra.hector</groupId>
<artifactId>hector-examples</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hector-examples</name>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.cliffc.high_scale_lib</groupId>
<artifactId>high-scale-lib</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.reardencommerce</groupId>
<artifactId>clhm-production</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-javautils</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>me.prettyprint</groupId>
<artifactId>hector</artifactId>
<version>0.6.0-15</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>0.9.18</version>
</dependency>
<dependency>
<groupId>libthrift</groupId>
<artifactId>libthrift</artifactId>
<version>917130</version>
</dependency>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra</artifactId>
<version>0.6.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.0</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<optimize>true</optimize>
<debug>true</debug>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>install libthrift</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<groupId>libthrift</groupId>
<artifactId>libthrift</artifactId>
<version>917130</version>
<file>${basedir}/lib/libthrift-r917130.jar</file>
</configuration>
</execution>
<execution>
<id>install cassandra</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra</artifactId>
<version>0.6.0</version>
<file>${basedir}/lib/apache-cassandra-0.6.0.jar</file>
</configuration>
</execution>
<execution>
<id>install high-scale-lib</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<groupId>org.cliffc.high_scale_lib</groupId>
<artifactId>high-scale-lib</artifactId>
<version>1.0.0</version>
<file>${basedir}/lib/high-scale-lib.jar</file>
</configuration>
</execution>
<execution>
<id>install clhm-production</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<groupId>com.reardencommerce</groupId>
<artifactId>clhm-production</artifactId>
<version>1.0.0</version>
<file>${basedir}/lib/clhm-production.jar</file>
</configuration>
</execution>
<execution>
<id>install cassandra-javautils</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-javautils</artifactId>
<version>1.0.0</version>
<file>${basedir}/lib/cassandra-javautils.jar</file>
</configuration>
</execution>
<execution>
<id>install hector</id>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<groupId>me.prettyprint</groupId>
<artifactId>hector</artifactId>
<version>0.6.0-15</version>
<file>${basedir}/lib/hector-0.6.0-15.jar</file>
</configuration>
</execution>
</executions>
</plugin>
<!-- mvn exec:java -Dexec.mainClass="com.example.Main" -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
@@ -0,0 +1,52 @@
package com.vrvm.cassandra.hector.example;

import java.util.Arrays;

import me.prettyprint.cassandra.service.BatchMutation;
import me.prettyprint.cassandra.service.CassandraClient;
import me.prettyprint.cassandra.service.CassandraClientPool;
import me.prettyprint.cassandra.service.CassandraClientPoolFactory;
import me.prettyprint.cassandra.service.Keyspace;
import me.prettyprint.cassandra.utils.StringUtils;

import org.apache.cassandra.thrift.Deletion;
import org.apache.cassandra.thrift.SlicePredicate;

/**
* Uses BatchMutation object to delete 2 of the 3 rows inserted from the
* {@link InsertColumnsBatchMutate} example, leaving only the "first" column.
*
* To run this example from maven:
* mvn -e exec:java -Dexec.mainClass="com.vrvm.cassandra.hector.example.DeleteBatchMutate"
*
* @author zznate
*
*/
public class DeleteBatchMutate {
public static void main(String[] args) throws Exception {

CassandraClientPool pool = CassandraClientPoolFactory.INSTANCE.get();
CassandraClient client = pool.borrowClient("localhost", 9160);
Keyspace keyspace = null;
try {
keyspace = client.getKeyspace("Keyspace1");

SlicePredicate slicePredicate = new SlicePredicate();
slicePredicate.addToColumn_names(StringUtils.bytes("last"));
slicePredicate.addToColumn_names(StringUtils.bytes("middle"));
Deletion deletion = new Deletion(keyspace.createTimestamp());
deletion.setPredicate(slicePredicate);

BatchMutation batchMutation = new BatchMutation();
batchMutation.addDeletion("jsmith", Arrays.asList("Standard1"), deletion);

keyspace.batchMutate(batchMutation);

System.out.println("Deletion successful.");
System.out.println("Verify on CLI with: get Keyspace1.Standard1['jsmith'] ");
System.out.println("Should only return the 'first' column.");
} finally {
pool.releaseClient(keyspace.getClient());
}
}
}
@@ -0,0 +1,41 @@
package com.vrvm.cassandra.hector.example;

import me.prettyprint.cassandra.service.CassandraClient;
import me.prettyprint.cassandra.service.CassandraClientPool;
import me.prettyprint.cassandra.service.CassandraClientPoolFactory;
import me.prettyprint.cassandra.service.Keyspace;
import me.prettyprint.cassandra.utils.StringUtils;

import org.apache.cassandra.thrift.ColumnPath;

/**
* Deletes the "first" Column for the key "jsmith" from Standard1 ColumnFamily.
*
* To run this example from maven:
* mvn -e exec:java -Dexec.mainClass="com.vrvm.cassandra.hector.example.DeleteSingleColumn"
*
* @author zznate
*/
public class DeleteSingleColumn {

public static void main(String[] args) throws Exception {

CassandraClientPool pool = CassandraClientPoolFactory.INSTANCE.get();
CassandraClient client = pool.borrowClient("localhost", 9160);
Keyspace keyspace = null;
try {
keyspace = client.getKeyspace("Keyspace1");
ColumnPath columnPath = new ColumnPath("Standard1");
// leave out the line below to delete all columns for the "jsmith" key
columnPath.setColumn(StringUtils.bytes("first"));
keyspace.remove("jsmith", columnPath);

System.out.println("Deletion successful");
System.out.println("Verify on CLI with: get Keyspace1.Standard1['jsmith'] ");
System.out.println("Should return 0 results.");
} finally {
// return client to pool. do it in a finally block to make sure it's executed
pool.releaseClient(keyspace.getClient());
}
}
}
@@ -0,0 +1,80 @@
package com.vrvm.cassandra.hector.example;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import me.prettyprint.cassandra.service.CassandraClient;
import me.prettyprint.cassandra.service.CassandraClientPool;
import me.prettyprint.cassandra.service.CassandraClientPoolFactory;
import me.prettyprint.cassandra.service.Keyspace;
import me.prettyprint.cassandra.utils.StringUtils;

import org.apache.cassandra.thrift.Column;
import org.apache.cassandra.thrift.ColumnParent;
import org.apache.cassandra.thrift.ColumnPath;
import org.apache.cassandra.thrift.KeyRange;
import org.apache.cassandra.thrift.SlicePredicate;
import org.apache.cassandra.thrift.SliceRange;

/**
* Use get_range_slices to retrieve the keys without deserializing the columns.
* For clear results, it's best to run this on an empty ColumnFamily.
*
* To run this example from maven:
* mvn -e exec:java -Dexec.mainClass="com.vrvm.cassandra.hector.example.GetRangeSlicesKeysOnly"
*
* @author zznate
*
*/
public class GetRangeSlicesKeysOnly {

public static void main(String[] args) throws Exception {

CassandraClientPool pool = CassandraClientPoolFactory.INSTANCE.get();
CassandraClient client = pool.borrowClient("localhost", 9160);
Keyspace keyspace = null;
try {
keyspace = client.getKeyspace("Keyspace1");
// Insert 10 rows with 3 columns each of dummy data
for (int i = 0; i < 10; i++) {
ColumnPath cp = new ColumnPath("Standard1");
cp.setColumn(StringUtils.bytes("fake_column_0"));
keyspace.insert("fake_key_"+i, cp, StringUtils.bytes("fake_value_0_" + i));

cp.setColumn(StringUtils.bytes("fake_column_1"));
keyspace.insert("fake_key_"+i, cp, StringUtils.bytes("fake_value_1_" + i));

cp.setColumn(StringUtils.bytes("fake_column_2"));
keyspace.insert("fake_key_"+i, cp, StringUtils.bytes("fake_value_2_" + i));
}

ColumnParent columnParent = new ColumnParent("Standard1");
SlicePredicate sp = new SlicePredicate();
sp.setColumn_names(new ArrayList<byte[]>());
KeyRange keyRange = new KeyRange();
keyRange.setCount(10);
// prefix matching is okay here regardless of partitioner
keyRange.setStart_key("fake_key_");
keyRange.setEnd_key("");
Map<String, List<Column>> results = keyspace.getRangeSlices(columnParent, sp, keyRange);
Set<String> keySet = results.keySet();

// setup slicing and predicate for the verification query
SliceRange sliceRange = new SliceRange(new byte[0], new byte[0], false, 3);
SlicePredicate slicePredicate = new SlicePredicate();
slicePredicate.setSlice_range(sliceRange);

for (String key : keySet) {
System.out.println("result key:" + key + " which should have null: " + results.get(key));
System.out.println("|-- called directly via get_slice, the value is: " +keyspace.getSlice(key, columnParent, slicePredicate));
System.out.println("|-- verify on CLI with: get Keyspace1.Standard1['" + key + "'] ");
}

} finally {
pool.releaseClient(keyspace.getClient());
}
}

}

0 comments on commit 222006f

Please sign in to comment.