@Override public Map<ByteBuffer, SuperColumn> multigetSuperColumn(List<ByteBuffer> keys, ColumnPath columnPath, boolean reversed, int size) throws HectorException { //valideSuperColumnPath(columnPath); // only can get supercolumn by multigetSuperSlice ColumnParent clp = new ColumnParent(columnPath.getColumn_family()); clp.setSuper_column(columnPath.getSuper_column()); SliceRange sr = new SliceRange(ByteBuffer.wrap(new byte[0]), ByteBuffer.wrap(new byte[0]), reversed, size); SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(sr); Map<ByteBuffer, List<SuperColumn>> sclist = multigetSuperSlice(keys, clp, sp); if (sclist == null || sclist.isEmpty()) { return Collections.emptyMap(); } Map<ByteBuffer, SuperColumn> result = new HashMap<ByteBuffer, SuperColumn>(keys.size() * 2); for (Map.Entry<ByteBuffer, List<SuperColumn>> entry : sclist.entrySet()) { List<SuperColumn> sclistByKey = entry.getValue(); if (sclistByKey.size() > 0) { result.put(entry.getKey(), sclistByKey.get(0)); } } return result; }
List<String> columns, List<IndexExpression> conditions, int maxResults) throws Exception SlicePredicate slicePredicate = new SlicePredicate(); slicePredicate.setColumn_names(asList); SliceRange sliceRange = new SliceRange(); sliceRange.setStart(ByteBufferUtil.EMPTY_BYTE_BUFFER); sliceRange.setFinish(ByteBufferUtil.EMPTY_BYTE_BUFFER); slicePredicate.setSlice_range(sliceRange); KeyRange keyRange = new KeyRange(maxResults); keyRange.setStart_key(minVal == null ? "".getBytes() : minVal); keyRange.setEnd_key(maxVal == null ? "".getBytes() : maxVal); ColumnParent cp = new ColumnParent(m.getTableName()); List<KeySlice> keys = conn.getClient().get_range_slices(cp, slicePredicate, keyRange, getConsistencyLevel());
private static long getSlicePredicateSize(SlicePredicate predicate) { if (predicate == null) { return getNullSize(); } return getCollectionSize(predicate.getColumn_names(), ThriftObjectSizeUtils::getByteBufferSize) + getSliceRangeSize(predicate.getSlice_range()); }
private List<KeySlice> getRangeSlices(org.apache.cassandra.thrift.KeyRange keyRange, @Nullable SliceQuery sliceQuery) throws BackendException { SliceRange sliceRange = new SliceRange(); sliceRange.setStart(ArrayUtils.EMPTY_BYTE_ARRAY) .setFinish(ArrayUtils.EMPTY_BYTE_ARRAY) .setCount(5); } else { connection.getClient().get_range_slices(new ColumnParent(columnFamily), new SlicePredicate() .setSlice_range(sliceRange), keyRange, ConsistencyLevel.QUORUM);
Deletion d = new Deletion(); SlicePredicate sp = new SlicePredicate(); sp.addToColumn_names(buf.as(StaticBuffer.BB_FACTORY)); d.setPredicate(sp); d.setTimestamp(commitTime.getDeletionTime(times)); org.apache.cassandra.thrift.Mutation m = new org.apache.cassandra.thrift.Mutation(); m.setDeletion(d); Cassandra.Client client = conn.getClient(); if (atomicBatch) { client.atomic_batch_mutate(batch, consistency); } else { client.batch_mutate(batch, consistency);
@Override public void setConf(final Configuration config) { super.setConf(config); // Copy some Titan configuration keys to the Hadoop Configuration keys used by Cassandra's ColumnFamilyInputFormat ConfigHelper.setInputInitialAddress(config, titanConf.get(GraphDatabaseConfiguration.STORAGE_HOSTS)[0]); if (titanConf.has(GraphDatabaseConfiguration.STORAGE_PORT)) ConfigHelper.setInputRpcPort(config, String.valueOf(titanConf.get(GraphDatabaseConfiguration.STORAGE_PORT))); if (titanConf.has(GraphDatabaseConfiguration.AUTH_USERNAME)) ConfigHelper.setInputKeyspaceUserName(config, titanConf.get(GraphDatabaseConfiguration.AUTH_USERNAME)); if (titanConf.has(GraphDatabaseConfiguration.AUTH_PASSWORD)) ConfigHelper.setInputKeyspacePassword(config, titanConf.get(GraphDatabaseConfiguration.AUTH_PASSWORD)); // Copy keyspace, force the CF setting to edgestore, honor widerows when set final boolean wideRows = config.getBoolean(INPUT_WIDEROWS_CONFIG, false); // Use the setInputColumnFamily overload that includes a widerows argument; using the overload without this argument forces it false ConfigHelper.setInputColumnFamily(config, titanConf.get(AbstractCassandraStoreManager.CASSANDRA_KEYSPACE), mrConf.get(TitanHadoopConfiguration.COLUMN_FAMILY_NAME), wideRows); log.debug("Set keyspace: {}", titanConf.get(AbstractCassandraStoreManager.CASSANDRA_KEYSPACE)); // Set the column slice bounds via Faunus's vertex query filter final SlicePredicate predicate = new SlicePredicate(); final int rangeBatchSize = config.getInt(RANGE_BATCH_SIZE_CONFIG, Integer.MAX_VALUE); predicate.setSlice_range(getSliceRange(TitanHadoopSetupCommon.DEFAULT_SLICE_QUERY, rangeBatchSize)); // TODO stop slicing the whole row ConfigHelper.setInputSlicePredicate(config, predicate); }
@Test public void testGetSuperRangeSlices() throws HectorException { for (int i = 0; i < 10; i++) { ColumnPath cp = new ColumnPath("Super1"); cp.setSuper_column(bytes("SuperColumn_1")); cp.setColumn(bytes("testGetSuperRangeSlices_" + i)); keyspace.insert("testGetSuperRangeSlices0", cp, StringSerializer.get().toByteBuffer("testGetSuperRangeSlices_Value_" + i)); keyspace.insert("testGetSuperRangeSlices1", cp, StringSerializer.get().toByteBuffer("testGetSuperRangeSlices_Value_" + i)); } // get value ColumnParent clp = new ColumnParent("Super1"); SliceRange sr = new SliceRange(ByteBuffer.wrap(new byte[0]), ByteBuffer.wrap(new byte[0]), false, 150); SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(sr); KeyRange range = new KeyRange(); range.setStart_key( "".getBytes()); range.setEnd_key( "".getBytes()); Map<String, List<SuperColumn>> keySlices = se.fromBytesMap(keyspace.getSuperRangeSlices(clp, sp, range)); assertNotNull(keySlices); assertNotNull("testGetSuperRangSlices0 is null", keySlices.get("testGetSuperRangeSlices0")); assertEquals("testGetSuperRangeSlices_Value_0", string(keySlices.get("testGetSuperRangeSlices0").get(0).getColumns().get(0).getValue())); assertEquals(1, keySlices.get("testGetSuperRangeSlices1").size()); assertEquals(10, keySlices.get("testGetSuperRangeSlices1").get(0).getColumns().size()); ColumnPath cp = new ColumnPath("Super1"); keyspace.remove("testGetSuperRangeSlices0", cp); keyspace.remove("testGetSuperRangeSlices1", cp); }
/** * {@inheritDoc} */ @Override public <N> Mutator<K> addDeletion(K key, String cf, N columnNameStart, N columnNameFinish, Serializer<N> nameSerializer, long clock) { SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(new SliceRange(nameSerializer.toByteBuffer(columnNameStart), nameSerializer.toByteBuffer(columnNameFinish), false, Integer.MAX_VALUE)); Deletion d = new Deletion().setTimestamp(clock).setPredicate(sp); getPendingMutations().addDeletion(key, Arrays.asList(cf), d); return this; }
if (!tableName.equals(table)) { try { client.set_keyspace(table); tableName = table; } catch (Exception e) { SlicePredicate predicate; if (fields == null) { predicate = new SlicePredicate().setSlice_range(new SliceRange( EMPTY_BYTE_BUFFER, EMPTY_BYTE_BUFFER, false, 1000000)); predicate = new SlicePredicate().setColumn_names(fieldlist); KeyRange kr = new KeyRange().setStart_key(startkey.getBytes("UTF-8")) .setEnd_key(new byte[] {}).setCount(recordcount); List<KeySlice> results = client.get_range_slices(parent, predicate, kr, scanConsistencyLevel); System.out.println(); System.out .println("ConsistencyLevel=" + scanConsistencyLevel.toString());
cellVersions.getKey().getColumnName(), ts); SlicePredicate pred = new SlicePredicate(); pred.setColumn_names(Collections.singletonList(colName)); Deletion del = new Deletion(); del.setPredicate(pred); del.setTimestamp(deleteTimestampGetter.applyAsLong(ts)); Mutation mutation = new Mutation(); mutation.setDeletion(del);
/** * Will throw a runtime exception if neither columnsNames nor count were set. * @return */ public SlicePredicate toThrift() { SlicePredicate pred = new SlicePredicate(); switch (predicateType) { case ColumnNames: if (columnNames == null ) { return null; } pred.setColumn_names(toThriftColumnNames(columnNames)); break; case Range: Assert.isTrue(countSet, "Count was not set, neither were column-names set, can't execute"); SliceRange range = new SliceRange(findBytes(start), findBytes(finish), reversed, count); pred.setSlice_range(range); break; case Unknown: default: throw new HectorException( "Neither column names nor range were set, this is an invalid slice predicate"); } return pred; }
"range", range.toString(), "start_column", ByteBufferUtil.bytesToHex(start_column), "consistency_level", consistency_level.name()); Tracing.instance.begin("get_paged_slice", traceParameters); consistencyLevel.validateForRead(keyspace); SlicePredicate predicate = new SlicePredicate().setSlice_range(new SliceRange(start_column, ByteBufferUtil.EMPTY_BYTE_BUFFER, false, -1)); return thriftifyKeySlices(rows, new ColumnParent(column_family), predicate, now);
SlicePredicate predicate = new SlicePredicate(); List<ByteBuffer> columnNames = new ArrayList<ByteBuffer>(); for (String superColumnName : superColumnNames) predicate.setColumn_names(columnNames); ColumnParent parent = new ColumnParent(columnFamily); List<ColumnOrSuperColumn> coscList; Connection conn = null; coscList = conn.getClient().get_slice(ByteBuffer.wrap(rowKey), parent, predicate, getConsistencyLevel());
public static SlicePredicate create(Range range, Limit limit) { SliceRange slice = new SliceRange( range.start(), range.end(), false, limit.value()); SlicePredicate predicate = new SlicePredicate(); predicate.setSlice_range(slice); return predicate; }
@Override public RowSliceQuery<K, C> withColumnSlice(ColumnSlice<C> slice) { if (slice.getColumns() != null) { predicate.setColumn_names(serializer.toBytesList(slice.getColumns())).setSlice_rangeIsSet(false); } else { predicate.setSlice_range(ThriftUtils.createSliceRange(serializer, slice.getStartColumn(), slice.getEndColumn(), slice.getReversed(), slice.getLimit())); } return this; }
@Test public void getSizeForMutationWithDeletionContainingEmptySlicePredicate() { long deletionSize = Long.BYTES + NULL_SIZE + NULL_SIZE * 2; assertThat(ThriftObjectSizeUtils.getMutationSize(new Mutation() .setDeletion(new Deletion().setPredicate(new SlicePredicate())))) .isEqualTo(NULL_SIZE + deletionSize); }
@Override public SuperColumn getSuperColumn(final ByteBuffer key, final ColumnPath columnPath, final boolean reversed, final int size) throws HectorException { //valideSuperColumnPath(columnPath); final SliceRange sliceRange = new SliceRange(ByteBuffer.wrap(new byte[0]), ByteBuffer.wrap(new byte[0]), reversed, size); Operation<SuperColumn> op = new Operation<SuperColumn>(OperationType.READ, failoverPolicy, keyspaceName, credentials) { @Override public SuperColumn execute(Cassandra.Client cassandra) throws HectorException { ColumnParent clp = new ColumnParent(columnPath.getColumn_family()); clp.setSuper_column(columnPath.getSuper_column()); SlicePredicate sp = new SlicePredicate(); sp.setSlice_range(sliceRange); try { List<ColumnOrSuperColumn> cosc = cassandra.get_slice(key, clp, sp, getThriftCl(OperationType.READ)); if (cosc == null || cosc.isEmpty()) { return null; } return new SuperColumn(ByteBuffer.wrap(columnPath.getSuper_column()), getColumnList(cosc)); } catch (Exception e) { throw xtrans.translate(e); } } }; operateWithFailover(op); return op.getResult(); }
/** * Create a SlicePredicate that selects a single column. * * @param colName Column name as a byte[]. * @return SlicePredicate that select the given column name only. */ static SlicePredicate slicePredicateColName(byte[] colName) { SlicePredicate slicePred = new SlicePredicate(); slicePred.addToColumn_names(ByteBuffer.wrap(colName)); return slicePred; } // slicePredicateColName
@Override public RowQuery<K, C> withColumnSlice(Collection<C> columns) { if (columns != null) predicate.setColumn_names(serializer.toBytesList(columns)).setSlice_rangeIsSet(false); return this; }
static boolean isEmptyPredicate(SlicePredicate predicate) { if (predicate == null) return true; if (predicate.isSetColumn_names() && predicate.getSlice_range() == null) return false; if (predicate.getSlice_range() == null) return true; byte[] start = predicate.getSlice_range().getStart(); if ((start != null) && (start.length > 0)) return false; byte[] finish = predicate.getSlice_range().getFinish(); if ((finish != null) && (finish.length > 0)) return false; return true; }