Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列从int更改为varint后,Cassandra选择问题_Cassandra_Cql - Fatal编程技术网

将列从int更改为varint后,Cassandra选择问题

将列从int更改为varint后,Cassandra选择问题,cassandra,cql,Cassandra,Cql,卡桑德拉的品种有什么特别的吗?我有一个包含不同列的表,以下select语句不起作用: select * from hourly_average where application_id = 3 and partner_id = 1 and location_id = 1 and device_id = 10003; 应用程序id、合作伙伴id和位置id是不同的。如果将它们转换为常规整数,则select语句可以正常工作。当它们是变量时,它返回0个结果,即使有许多结果与这些值匹配 更新:添加了表定

卡桑德拉的品种有什么特别的吗?我有一个包含不同列的表,以下select语句不起作用:

select * from hourly_average where application_id = 3 and partner_id = 1 and location_id = 1 and device_id = 10003;
应用程序id、合作伙伴id和位置id是不同的。如果将它们转换为常规整数,则select语句可以正常工作。当它们是变量时,它返回0个结果,即使有许多结果与这些值匹配

更新:添加了表定义:

CREATE TABLE myschema.hourly_average (
    application_id varint,
    partner_id varint,
    location_id varint,
    device_id int,
    day date,
    hour int,
    average float,
    count int,
    max float,
    min float,
    PRIMARY KEY ((application_id, partner_id, location_id, device_id), day, hour)
) WITH CLUSTERING ORDER BY (day DESC, hour DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';
select的一些输出*

 application_id | partner_id | location_id | device_id | day        | hour | average    | count | max  | min
----------------+------------+-------------+-----------+------------+------+------------+-------+------+------
              3 |          1 |           1 |     20004 | 2016-12-01 |    2 |          0 |     1 |    0 |    0
              3 |          1 |           1 |     20004 | 2016-12-01 |    1 |          0 |     2 |    0 |    0
              3 |          1 |           1 |     20004 | 2016-12-01 |    0 |          0 |     2 |    0 |    0
              3 |          1 |           1 |     20004 | 2016-11-30 |   23 |          0 |     2 |    0 |    0
              3 |          1 |           1 |     10003 | 2016-12-01 |    2 | 1290.80017 |    75 | 1553 |  820
              3 |          1 |           1 |     10003 | 2016-12-01 |    1 |  888.19165 |   120 |  957 |  830
              3 |          1 |           1 |     10003 | 2016-12-01 |    0 |  991.09167 |   120 | 1062 |  896
该版本是dsc cassandra 3.0.9

注:


它似乎确实与原来是int的列有关,而我改变了表,使之成为varint。如果我创建一个全新的表,其中只有一列int类型,添加一些数据,然后将其更改为varint类型,同样的问题也会发生。将列类型从int更改为varint是否存在某种缺陷?

我也遇到过类似的问题,尽管我不认为我们将列类型从int更改为varint-从一开始就是varint

唯一对我有效的是双重转换黑客:

(...) where key = blobAsVarint(intAsBlob(1))

你能发布你的表格定义吗?您是否使用任何二级索引?你用的是哪个版本?真的很奇怪…我刚刚试过你的例子,效果很好,所以我需要看看你的表到底是什么样子。添加了更多细节。注意,它似乎确实与原来是int的列有关,而我修改了表,使之成为varint。如果我创建一个全新的表,其中只有一列int类型,添加一些数据,然后将其更改为varint类型,同样的问题也会发生。将列类型从int更改为varint是否存在某种缺陷?