【问题标题】:Storing data from java to cassandra将数据从java存储到cassandra
【发布时间】:2018-09-06 05:50:01
【问题描述】:

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

线程“主”com.datastax.driver.core.exceptions.SyntaxError 中的异常:第 1:115 行在输入“PRIMARY”处没有可行的替代方案(...* 来自 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

【问题讨论】:

    标签: java python cassandra cql


    【解决方案1】:

    尝试将您的 WHERE 子句更改为:

    WHERE sensor_id IS NOT NULL PRIMARY KEY (sensor_id)
    

    如果您收到错误提示:

    没有为物化视图定义除主键之外的列

    基于CASSANDRA-13564

    该错误消息意味着您仅将基础中的分区键/主键重新用作视图的分区键(您的基础主键中没有额外的集群列)。

    当我有一个带有简单 PRIMARY KEY 的表时,我会收到该消息,并且我尝试使用相同的简单 PRIMARY KEY 创建一个视图。

    例如,如果我有这张桌子:

    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 确实不是一个好主意。

    【讨论】:

    • 在这种情况下,它给了我这个错误“除了主键之外,没有为物化视图定义任何列”
    • 它仍然给我错误“除了主键之外,没有为物化视图定义任何列”
    • @Realtiger 您可以编辑您的帖子以添加您的表定义吗?没有它很难告诉你为什么。
    猜你喜欢
    • 2011-08-16
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2013-11-28
    • 2014-02-04
    相关资源
    最近更新 更多