cassandra - 在cassandra表中动态添加列

标签 cassandra hector cql cql3

我在 CQl3 中有下表

create table userInfo
(
 userid text,
 email text,
 firstName text,
 lastName text,
 city text,
 Primary key (userid,email)
);

现在我想根据用户选择动态地将两列 COL1 和 COL2 添加到此表中。我该怎么做?

我做了以下事情

ALTER TABLE ADD COL1 text;
ALTER TABLE ADD COL2 text;

它将 COL1 和 COL2 添加到表中。 然后,当我插入 userInfo(..,..,COL1,..) values(..,..,'some value',..) 时,它只是将 NULL 放入 COL1 中。

建议一些动态添加列的好方法。如果我有大量要添加的列,我认为 ALTER table 不是好方法。我正在使用 java 程序中的 Hector 库来动态添加列。

最佳答案

也许 CQL 不是您的最佳选择。 CQL 要求您预先定义架构以允许类似 SQL 的语法功能,但它剥夺了 Cassandra 的一些有用的动态功能。使用几乎所有 Cassandra 客户端的基于 Thrift 的突变功能,您可以简单地命名要写入的列,如果它不存在,则会为您创建。

例如:

ks.insert(key, createColumnPath(colName), bytes(value));

关于cassandra - 在cassandra表中动态添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14806643/

相关文章:

java - Spark中保存到cassandra,java中没有parallelize方法

azure - 如何修复在Azure服务中运行Cassandra的 'not support yet'错误?

java - 如何运行 Cassandra Hector 客户端示例?

java - 关于cql过滤器

computer-science - 什么是 SSTable?

search - Cassandra全文搜索喜欢

java - Cassandra key 缓存为空

java - 我无法在java中使用hector创建 super 列

cassandra - cassandra中主键上的模式匹配 'like'

cassandra - 替换 Apache Cassandra 中的表