Create keyspaces and column families - marcusbb/astyanax GitHub Wiki
Astyanax provides a mechanism to programmatically create keyspaces and column families based on the Keyspace and ColumnFamily objects. The API will pick up the names and validators from the object but will allow for overrides in an operation Map<String, Object>. The API supports all properties supported by the CLI.
Assuming you already created your keyspace object you can then create the actual keyspace by calling
keyspace.createKeyspace(ImmutableMap.<String, Object>builder()
.put("strategy_options", ImmutableMap.<String, Object>builder()
.put("us-east", "3");
.put("eu-west", "3");
.build())
.put("strategy_class", "NetworkTopologyStrategy")
.build()
);
keyspace.dropKeyspace()
ColumnFamily<String, String> CF_STANDARD1 = ColumnFamily
.newColumnFamily("Standard1", StringSerializer.get(), StringSerializer.get());
keyspace.createColumnFamily(CF_STANDARD1,null);
keyspace.createColumnFamily(CF_STANDARD1, ImmutableMap.<String, Object>builder()
.put("column_metadata", ImmutableMap.<String, Object>builder()
.put("Index1", ImmutableMap.<String, Object>builder()
.put("validation_class", "UTF8Type")
.put("index_name", "Index1")
.put("index_type", "KEYS")
.build())
.put("Index2", ImmutableMap.<String, Object>builder()
.put("validation_class", "UTF8Type")
.put("index_name", "Index2")
.put("index_type", "KEYS")
.build())
.build())
.build());
keyspace.dropColumnFamily(CF_STANDARD1);