我已经向Cassandra插入了大量数据。现在我想随机查询一条记录。
但我不知道primary key
。所以我想在Cassandra中获取all data
的主键,然后我可以使用一个随机主键来查询数据。
我可以从Cassandra的data
目录中获取它吗?我只在该目录中找到.db文件。
答案 0 :(得分:3)
你在哪个版本的Cassandra?如果您使用的是Cassandra 3,则可以从命令行查询system_schema.columns,并使用grep查找PRIMARY KEY部分,如下所示:
$ bin/cqlsh -u aploetz -p pass
-e'SELECT keyspace_name,table_name,column_name,kind
FROM system_schema.columns' | grep _key
test | fail | id | partition_key
stackoverflow | hourly_average | application_id | partition_key
stackoverflow | meters | device_id | partition_key
stackoverflow | meters | parking_id | partition_key
stackoverflow | meters2 | device_id | partition_key
stackoverflow | meters2 | parking_id | partition_key
然后要获取聚类键,您可以稍微修改一下:
$ bin/cqlsh -u aploetz -p pass
-e'SELECT keyspace_name,table_name,column_name,kind
FROM system_schema.columns' | grep clustering
stackoverflow | hourly_average | device_id | clustering
stackoverflow | hourly_average | location_id | clustering
stackoverflow | hourly_average | partner_id | clustering
stackoverflow | meters | date | clustering
stackoverflow | meters | status | clustering
stackoverflow | meters2 | date | clustering
stackoverflow | meters2 | status | clustering
请注意,如果要按键空间和表过滤这些结果,可以在WHERE子句中指定这些结果。
答案 1 :(得分:0)
您需要使用TOKEN函数以避免未绑定的SELECT * FROM xxx;
查询。 This external post解释了如何遍历所有数据集,但您可以通过非常小的努力将其用于您的用例。