我正在尝试在Cassandra CLI Version 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}];
答案 0 :(得分:4)
通过CLI创建列族不会创建您必须坚持的架构。这取决于您如何插入数据,即定义主键的方式。当您通过CLi创建列族时,您只需要定义主键将包含哪种值,即它是字符串(UTF8Type),int(IntegerType)等。
您也无法通过CLI实际获得KEY列的别名(也就是表中的主键)。你have to use CQL for that。如果你想要定义的模式和结构化查询而不是使用宽行,你应该定位更新版本的cassandra(为什么现在1.2.x?)并使用CLQ3。
更直观地表达我的意思,你的cassandra-cli语句在从cqlsh通过describe table命令查看时创建了这个:
CREATE TABLE movies (
KEY text PRIMARY KEY, <------- pk
genres text,
title text,
movieid text
) WITH // and a bunch of cf options
但这并不意味着您无法插入另一个未定义的列,因为thrift并不真正关心CF的架构。