如何在 cassandra 2.0.5 中删除表或列族?

Posted

技术标签:

【中文标题】如何在 cassandra 2.0.5 中删除表或列族?【英文标题】:How to DROP tables or column families in cassandra 2.0.5? 【发布时间】:2014-04-05 20:17:32 【问题描述】:

我正在尝试从我的数据库中删除一个表/列族,但我无法做到。

我尝试了以下命令,它们的响应是:

cqlsh:testreducedb> DROP_COLUMNFAMILY largest_time_total;
Bad Request: line 1:0 no viable alternative at input 'DROP_COLUMNFAMILY'
cqlsh:testreducedb> DROP COLUMNFAMILY largest_time_total;
Bad Request: unconfigured columnfamily largest_time_total
cqlsh:testreducedb> DROP COLUMN FAMILY largest_time_total;
Bad Request: line 1:5 no viable alternative at input 'COLUMN'
cqlsh:testreducedb> DROP COLUMN FAMILY 'largest_time_total';
Bad Request: line 1:5 no viable alternative at input 'COLUMN'
cqlsh:testreducedb> DROP COLUMN FAMILY "largest_time_total";
Bad Request: line 1:5 no viable alternative at input 'COLUMN'

还有:

cqlsh:testreducedb> DROP_TABLE largest_time_total;
Bad Request: line 1:0 no viable alternative at input 'DROP_TABLE'
cqlsh:testreducedb> DROP TABLE largest_time_total;
Bad Request: unconfigured columnfamily largest_time_total
cqlsh:testreducedb> DROP TABLE 'largest_time_total';
Bad Request: line 1:11 no viable alternative at input 'largest_time_total'
cqlsh:testreducedb> DROP TABLE "largest_time_total";
Bad Request: unconfigured columnfamily largest_time_total

有人知道如何在 Cassandra 2.0.5 中删除表/列族吗?

我正在使用:

[cqlsh 4.1.1 | Cassandra 2.0.5 | CQL spec 3.1.1 | Thrift protocol 19.39.0]

【问题讨论】:

【参考方案1】:

我将检查您遇到的错误,以便您可以清楚地了解正在发生的事情,但首先要注意 columnfamily == table.

cqlsh:testreducedb> DROP_COLUMNFAMILY maximum_time_total; 错误请求:第 1:0 行在输入 'DROP_COLUMNFAMILY' 处没有可行的替代方案

DROP_COLUMNFAMILY 不是有效命令。它应该是 DROP COLUMFAMILY DROP TABLE 假设您已经在使用存储上述表(又名列族)的键空间(数据库)。如果您没有为您的客户端指定密钥空间,那么您可以在 drop 语句中指定它:

DROP TABLE <keyspace>.<columnfamily>;
DROP TABLE <keyspace>.<table>;
# the below is an actual statement assuming grocerystore is the keyspace and
# shoppers is the columnfamily 
DROP TABLE "grocerystore"."shoppers";

cqlsh:testreducedb> DROP COLUMNFAMILY maximum_time_total; 错误请求:未配置的列族最大时间总计

列族实际上并不存在。基于仅看到 cqlsh,我敢打赌,您没有指定使用存储 *largest_time_total* 的键空间。尝试在 cqlsh 中使用USE &lt;keyspace&gt;,例如USE grocerystore;

其余的错误只是上述的重复。

P.S你真的很接近这个,但是COLUMNFAMILY之间的空格太多了:)

cqlsh:testreducedb> DROP COLUMN FAMILY large_time_total; 错误请求:第 1:5 行在输入“COLUMN”处没有可行的替代方案

试试:

USE testreducedb;
DROP COLUMNFAMILY largest_time_total;

【讨论】:

以上是关于如何在 cassandra 2.0.5 中删除表或列族?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不创建快照的情况下从 cassandra 表中删除所有记录

如何使用 Azure Synapse 在 Databricks 上删除表或删除行?

ttl过期时如何从cassandra中删除陈旧数据

如何使用 Cassandra 存储后端删除 Titan 中的图形?

如何在spark中读写cassandra数据

Spark SQL cassandra 删除记录