将数据从java存储到cassandra

将数据从java存储到cassandra,java,python,cassandra,cql,Java,Python,Cassandra,Cql,我正在存储文件数据。我通过java读取文件,当我在cassandra中存储文件数据时,它会给我这个错误 线程“main”com.datastax.driver.core.exceptions.SyntaxError:第1行:115在输入“PRIMARY”处没有可行的替代方案(…*来自sensorkeyspace.sensortable,其中[PRIMARY]…) 我的问题就在这里 CREATE MATERIALIZED VIEW IF NOT EXISTS sensorkeyspace.tex

我正在存储文件数据。我通过java读取文件,当我在cassandra中存储文件数据时,它会给我这个错误

线程“main”com.datastax.driver.core.exceptions.SyntaxError:第1行:115在输入“PRIMARY”处没有可行的替代方案(…*来自sensorkeyspace.sensortable,其中[PRIMARY]…)

我的问题就在这里

CREATE MATERIALIZED VIEW  IF NOT EXISTS sensorkeyspace.texttable AS select * from sensorkeyspace.sensortable WHERE PRIMARY KEY (sensor_id) IS NOT NULL

尝试将WHERE子句更改为:

WHERE sensor_id IS NOT NULL PRIMARY KEY (sensor_id)
如果您收到一个错误,表明:

除了主键之外,没有为物化视图定义任何列

基于:

该错误消息意味着您只使用了基址中的分区键/主键作为视图的分区键(基址主键中没有额外的集群列)

当我有一个带有简单主键的表,并且我尝试使用相同的简单主键创建一个视图时,我会得到这个消息

例如,如果我有这个表:

CREATE TABLE stackoverflow.newtable (
  name text PRIMARY KEY,
  score float,
  value float,
  value2 blob);
这失败了:

cassdba@cqlsh:stackoverflow> CREATE MATERIALIZED VIEW IF NOT EXISTS 
  stackoverflow.newtable_view AS SELECT * FROM stackoverflow.newtable 
  WHERE name IS NOT NULL PRIMARY KEY (name);

InvalidRequest: Error from server: code=2200 [Invalid query] 
message="No columns are defined for Materialized View other than primary key"
但这适用于同一张表:

cassdba@cqlsh:stackoverflow> CREATE MATERIALIZED VIEW IF NOT EXISTS 
  stackoverflow.newtable_view AS SELECT * FROM stackoverflow.newtable 
  WHERE score IS NOT NULL AND name IS NOT NULL PRIMARY KEY (score,name);

Warnings :
Materialized views are experimental and are not recommended for production use.

不是很相关,但请注意最后一部分;关于如何在Cassandra中使用MVs确实不是一个好主意。

在这种情况下,它会给我这个错误“除了主键之外,没有为物化视图定义列”仍然会给我错误“除了主键之外,没有为物化视图定义列”@Realtiger您能编辑您的帖子来添加表定义吗?很难告诉你为什么没有它。