我正在存储文件数据。我通过 java 读取该文件,当我将文件数据存储在 cassandra 中时,它会给我这个错误。
Exception in thread "main" com.datastax.driver.core.exceptions.SyntaxError: line 1:115 no viable alternative at input 'PRIMARY' (...* from sensorkeyspace.sensortable WHERE [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)
如果您收到错误消息,表明:
No columns are defined for Materialized View other than primary key
基于CASSANDRA-13564 :
That error message implies you re-used only the partition key/primary key from the base as the partition key for your view (you had no extra clustering columns in your base primary key).
当我有一个带有简单主键的表,并且我尝试使用相同的简单主键创建 View 时,我会收到该消息。
例如,如果我有这张表:
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 中使用 MV 确实不是一个好主意。
关于java - 将数据从java存储到cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519332/