在Cassandra中以编程方式创建列族时群集状态不一致

在Cassandra中以编程方式创建列族时群集状态不一致,cassandra,hector,Cassandra,Hector,在尝试动态创建列族时,我面临$subject。我使用Hector来实现这一点,并具有默认的一致性级别。我认为,原因是Hector在跨集群复制列族之前返回create column family方法。我如何正确处理这件事?你相信吗?请阅读本文,其中有一个示例,说明如何创建柱族,然后打印出柱族定义。在cassandra集群中创建列族后,模式将在集群中的节点之间传播。如果要检查cassandra节点中的列族,可能可以使用cassandra cli和命令show schema 编辑: 根据后续评论,解决

在尝试动态创建列族时,我面临$subject。我使用Hector来实现这一点,并具有默认的一致性级别。我认为,原因是Hector在跨集群复制列族之前返回create column family方法。我如何正确处理这件事?

你相信吗?请阅读本文,其中有一个示例,说明如何创建柱族,然后打印出柱族定义。在cassandra集群中创建列族后,模式将在集群中的节点之间传播。如果要检查cassandra节点中的列族,可能可以使用
cassandra cli
和命令
show schema

编辑:
根据后续评论,解决方案是将hector升级到最新版本,并调用方法
addColumnFamily(cfdef,true),即等待模式在集群中传播。然后开始向该列族插入数据(列名及其值)。

您相信吗?请阅读本文,其中有一个示例,说明如何创建柱族,然后打印出柱族定义。在cassandra集群中创建列族后,模式将在集群中的节点之间传播。如果要检查cassandra节点中的列族,可能可以使用
cassandra cli
和命令
show schema

编辑:
根据后续评论,解决方案是将hector升级到最新版本,并调用方法
addColumnFamily(cfdef,true),即等待模式在集群中传播。然后开始将数据(列名及其值)插入此列族。

当我以编程方式说时,我正在从代码中执行此操作。我不想使用cli。你指出的链接并不能解决问题。它添加了一个带有CF的键空间。我只想动态添加一个CF(不丢失我的键空间,也不丢失我所有的数据),并确保它被传播。“我希望我在这里讲得有道理。”@TharinduMathew我很抱歉,因为我不能清楚地表达自己;-)。在我做这个编辑之前,我可以得到你的确认,你到底想做什么。是否要将列名及其值动态添加到现有列族中,并验证插入的列是否在群集中传播?请重试:)。卡桑德拉0.7的3节点集群。我有一个并发问题。不同数量的线程尝试创建列族并插入数据。因此,我对其进行同步,以便只有一个线程将创建列族,并验证更改是否已通过集群传播。但这一结果与赫克托不一致。我找到了部分解决办法。现在,我使用descripe_模式的Thrift API检查集群中的不一致版本。但有时,它不会在集群中传播,并导致两个模式版本。有什么办法可以解决这个问题吗?等待集群本身的模式协议怎么样?使用hector添加列族时,调用方法
addColumnFamily(cfdef,true),即等待模式在集群中传播。然后您可以开始向这个列族插入数据(列名及其值)。谢谢Jasonw。我使用的是没有重载方法的hector 0.7。但是,我查看了主干代码,它与我使用Thrift API所做的完全相同。再次感谢,这证实了我的修正是正确的:)当我以编程的方式说的时候,我是在从代码中看这个问题的。我不想使用cli。你指出的链接并不能解决问题。它添加了一个带有CF的键空间。我只想动态添加一个CF(不丢失我的键空间,也不丢失我所有的数据),并确保它被传播。“我希望我在这里讲得有道理。”@TharinduMathew我很抱歉,因为我不能清楚地表达自己;-)。在我做这个编辑之前,我可以得到你的确认,你到底想做什么。是否要将列名及其值动态添加到现有列族中,并验证插入的列是否在群集中传播?请重试:)。卡桑德拉0.7的3节点集群。我有一个并发问题。不同数量的线程尝试创建列族并插入数据。因此,我对其进行同步,以便只有一个线程将创建列族,并验证更改是否已通过集群传播。但这一结果与赫克托不一致。我找到了部分解决办法。现在,我使用descripe_模式的Thrift API检查集群中的不一致版本。但有时,它不会在集群中传播,并导致两个模式版本。有什么办法可以解决这个问题吗?等待集群本身的模式协议怎么样?使用hector添加列族时,调用方法
addColumnFamily(cfdef,true),即等待模式在集群中传播。然后您可以开始向这个列族插入数据(列名及其值)。谢谢Jasonw。我使用的是没有重载方法的hector 0.7。但是,我查看了主干代码,它与我使用Thrift API所做的完全相同。再次感谢,这证实了我的修复是正确的:)