可以说我有一张像这样的桌子:
CREATE TABLE USER (
userid ascii,
books set<text>
PRIMARY KEY (userid)
);
和索引:
create index on USER (books);
我想使用 sql 上下文查询书籍。我正在做的是:
CassandraSQLContext cassandraContext = new CassandraSQLContext(sparkContext);
SchemaRDD userTable = cassandraContext.sql("SELECT * FROM keyspace.user");
userTable.registerTempTable("usertable");
以下查询不适用于Cassandra :
SchemaRDD userTable = cassandraContext.sql("SELECT * FROM keyspace.user where books CONTAINS 'book1' and books CONTAINS 'book2'");
它返回只有“book1”的用户。我尝试过类似的查询,books CONTAINS ('book1', 'book2')
但没有一个有效。
我可以在注册表上做的是:
SchemaRDD users = cassandraContext.sql("SELECT * FROM usertable where userid='some_user_id'");
我想做的是通过以下书籍查询:
SchemaRDD users = cassandraContext.sql("SELECT * FROM usertable where books IN ('book1', 'book2')");
或类似的查询。
但它不起作用。它返回 0 条记录。我试图注册名为的索引表,user_books_idx
但它也没有工作。我可以查询索引集合吗?我该怎么做?