diff --git a/kudu/src/main/java/com/yahoo/ycsb/db/KuduYCSBClient.java b/kudu/src/main/java/com/yahoo/ycsb/db/KuduYCSBClient.java
index 05757b41f37b06dba7e8b604f3d062470b0c4556..4a771a7fa7a29193321bc1f9a514448fe9462a36 100644
--- a/kudu/src/main/java/com/yahoo/ycsb/db/KuduYCSBClient.java
+++ b/kudu/src/main/java/com/yahoo/ycsb/db/KuduYCSBClient.java
@@ -158,6 +158,9 @@ public class KuduYCSBClient extends com.yahoo.ycsb.DB {
     schema = new Schema(columns);
 
     CreateTableOptions builder = new CreateTableOptions();
+    List<String> rangePartitionColumns = new ArrayList<>(1);
+    rangePartitionColumns.add(KEY);
+    builder.setRangePartitionColumns(rangePartitionColumns);
     builder.setNumReplicas(numReplicas);
     // create n-1 split keys, which will end up being n tablets master-side
     for (int i = 1; i < numTablets + 0; i++) {
@@ -229,25 +232,23 @@ public class KuduYCSBClient extends com.yahoo.ycsb.DB {
         querySchema = COLUMN_NAMES;
         // No need to set the projected columns with the whole schema.
       } else {
-        querySchema = new ArrayList<String>(fields);
+        querySchema = new ArrayList<>(fields);
         scannerBuilder.setProjectedColumnNames(querySchema);
       }
 
-      KuduPredicate.ComparisonOp comparisonOp;
+      PartialRow lowerBound = schema.newPartialRow();
+      lowerBound.addString(0, startkey);
+      scannerBuilder.lowerBound(lowerBound);
+
       if (recordcount == 1) {
-        comparisonOp = KuduPredicate.ComparisonOp.EQUAL;
-      } else {
-        comparisonOp = KuduPredicate.ComparisonOp.GREATER_EQUAL;
+        PartialRow upperBound = schema.newPartialRow();
+        upperBound.addString(0, startkey + '\0');
+        scannerBuilder.exclusiveUpperBound(upperBound);
       }
-      KuduPredicate keyPredicate = KuduPredicate.newComparisonPredicate(
-          schema.getColumnByIndex(0),
-          comparisonOp,
-          startkey);
-
-      KuduScanner scanner = scannerBuilder
-          .addPredicate(keyPredicate)
-          .limit(recordcount) // currently noop
-          .build();
+
+      scannerBuilder.limit(recordcount); // currently noop
+
+      KuduScanner scanner = scannerBuilder.build();
 
       while (scanner.hasMoreRows()) {
         RowResultIterator data = scanner.nextRows();
diff --git a/pom.xml b/pom.xml
index 4b39681fcc8982ab84469aae9edaee1f437ed347..8109f5f0d7995faa7c7290a9a69c8f49a534ba6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@ LICENSE file.
     <geode.version>1.0.0-incubating.M2</geode.version>
     <googlebigtable.version>0.2.3</googlebigtable.version>
     <infinispan.version>7.2.2.Final</infinispan.version>
-    <kudu.version>0.8.0</kudu.version>
+    <kudu.version>0.9.0</kudu.version>
     <openjpa.jdbc.version>2.1.1</openjpa.jdbc.version>
     <!--<mapkeeper.version>1.0</mapkeeper.version>-->
     <mongodb.version>3.0.3</mongodb.version>