1

我们在更改表格时遇到了一个奇怪的问题。我们使用 Cassandra python 驱动程序 sync_table() 方法从我们的模型(在 py 文件中定义)同步到 Cassandra。集群是一个 20 个节点,压力很大(所有节点的最大使用率在 50-70% 范围内)。

当使用 Cassandra python 驱动程序同步模式时,它在内部执行“ALTER TABLE ADD”命令。在一个特定的表中,当我们添加七个新列时,我们注意到了这种奇怪的行为

  • DESCRIBE TABLE 命令显示新创建的 7 列中的 3 或 4 列。有一次,它在 DESCRIBE TABLE 输出中显示了所有 7 列。

    • 但在 select * 输出中,未显示新列。

行为不一致。我们手动删除了列,然后重新同步了架构。每次出现问题时,选择命令都不会显示 7 列中的几列。

任何调试此问题的指针?是因为 Cassandra 节点上的压力吗?

4

1 回答 1

2

最可能的问题是您遇到了架构协议问题,因为执行了许多架构更改命令。

通常,您只需将架构更改命令发送到一台主机,并获得有关架构协议的确认。第一件事通常是通过创建一个使用白名单策略的会话来完成,其中列表仅包含一个节点(与令牌感知或循环策略相反)。第二件事很简单——您要么检查执行命令后返回的结果集的相应标志,要么检查集群元数据的相应字段/方法。

于 2018-09-06T18:39:17.667 回答