如何使用astyanax在Cassandra中设置GCGraceSeconds?

时间:2012-06-23 11:09:12

标签: java cassandra astyanax

我需要将GCGraceSeconds设置为0,因为我只有一个节点,但我找不到可以为此设置值的位置。可以从astyanax设置还是在某些设置文件中设置?

2 个答案:

答案 0 :(得分:4)

在更新版本的cassandra中,您实际上是在每个列系列的基础上设置gc_grace_seconds作为架构的一部分。据我所知,Astyanax目前不支持设置该属性。 ColumnFamilyDefinition类中没有相应的方法。

https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/ddl/ColumnFamilyDefinition.java

如果您愿意,可以使用cassandra-cli工具在任何现有列族上设置属性。

此外,添加对Astyanax的支持似乎不太难。我相信他们会接受拉取请求。

<强>更新

Astyanax(暂时)现在支持此设置。见ColumnFamilyDefinition。这可以在astyanax列族创建中设置,如下所示:

OperationResult<SchemaChangeResult> opres = keyspace.createColumnFamily(cf, ImmutableMap.<String, Object> builder()
    .put("comparator", "UTF8Type")
    .put("key_validation_class", "UTF8Type")
    .put("gc_grace_seconds", 60*60*24) // gc grace seconds of one day
    .build()
);

答案 1 :(得分:2)

conf / cassandra.yaml (Cassandra配置文件)中完成

早期版本0.7: conf / storage-conf.xml

请记住:“将此值设置为足够大的值,您确信删除标记将在经过这么多秒后传播到所有副本,即使面对硬件故障也是如此。默认值是十天。

默认为:' 864000 '秒,或 10 天。