Search in sources :

Example 1 with Keyspace

use of me.prettyprint.hector.api.Keyspace in project cassandra-indexing by hmsonline.

the class IndexUtil method fetchRow.

public static Map<String, String> fetchRow(Cluster cluster, String keyspace, String columnFamily, String key, Collection<String> indexColumns) throws Exception {
    Keyspace ks = HFactory.createKeyspace(keyspace, cluster);
    SliceQuery<String, String, String> sliceQuery = HFactory.createSliceQuery(ks, StringSerializer.get(), StringSerializer.get(), StringSerializer.get());
    sliceQuery.setColumnFamily(columnFamily);
    sliceQuery.setKey(key);
    if (!containsMultiValueColumn(indexColumns)) {
        // Fetch specific columns
        List<String> columnNames = new ArrayList<String>();
        for (String indexColumn : indexColumns) {
            columnNames.add(indexColumn);
        }
        String[] varargs = columnNames.toArray(new String[0]);
        sliceQuery.setColumnNames(varargs);
    } else if (indexColumns.size() == 1) {
        // Fetch a slice range
        String columnPrefix = getColumnPrefix(indexColumns.iterator().next());
        sliceQuery.setRange(columnPrefix, columnPrefix + Character.MAX_VALUE, false, 2000);
    } else {
        // MAX_COLUMNS
        sliceQuery.setRange("", "", false, 2000);
    }
    QueryResult<ColumnSlice<String, String>> row = sliceQuery.execute();
    ColumnSlice<String, String> columns = row.get();
    Map<String, String> result = new HashMap<String, String>();
    for (HColumn<String, String> column : columns.getColumns()) {
        result.put(column.getName(), column.getValue());
    }
    return result;
}
Also used : HashMap(java.util.HashMap) Keyspace(me.prettyprint.hector.api.Keyspace) ColumnSlice(me.prettyprint.hector.api.beans.ColumnSlice) ArrayList(java.util.ArrayList)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Keyspace (me.prettyprint.hector.api.Keyspace)1 ColumnSlice (me.prettyprint.hector.api.beans.ColumnSlice)1