3

我正在尝试在 Cassandra CLI 版本 1.1.6 中创建一个列族,我不确定如何将主键指定为 movieid。

CREATE COLUMN FAMILY movies
WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: movieid, validation_class: UTF8Type}
{column_name: title, validation_class: UTF8Type}
{column_name: genres, validation_class: UTF8Type}];
4

1 回答 1

4

通过 CLI 创建列族不会创建您必须坚持的模式。这取决于您如何插入数据,即定义主键的方式。当您通过 CLi 创建列族时,您只需定义主键将包含的值类型,即它是字符串 (UTF8Type)、int (IntegerType) 等。

此外,您实际上不能通过 CLI 为 KEY 列(也就是表中的主键)设置别名。您必须为此使用 CQL。如果您想要定义模式和结构化查询而不是使用宽行,您应该针对更新版本的 cassandra(为什么现在是 1.2.x?)并使用 CLQ3。

我的意思更直观地表示,当通过 describe table 命令从 cqlsh 查看时,您的 cassandra-cli 语句会创建它:

CREATE TABLE movies (
  KEY text PRIMARY KEY,    <------- pk 
  genres text,
  title text,
  movieid text
) WITH // and a bunch of cf options

但这并不意味着您不能插入另一个未在此处定义的列,因为 thrift 并不真正关心 CF 的模式。

于 2013-11-22T12:43:09.407 回答