次のようなテーブルがあるとしましょう:
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 レコードを返します。asという名前のインデックステーブルを登録しようとしましuser_books_idx
たが、うまくいきませんでした。インデックス付きコレクションに対してクエリを実行できますか? どうすればできますか?