我已經插入了大量的數據到卡桑德拉。現在我想隨機查詢一條記錄。 但我不知道primary key
。所以我想要一種方法來獲取Cassandra中的主鍵all data
,然後我可以使用一個隨機主鍵來查詢數據。如何獲取Cassandra中所有記錄的主鍵?
我可以從卡桑德拉的data
目錄中找到它嗎?我只在該目錄中找到.db文件。
我已經插入了大量的數據到卡桑德拉。現在我想隨機查詢一條記錄。 但我不知道primary key
。所以我想要一種方法來獲取Cassandra中的主鍵all data
,然後我可以使用一個隨機主鍵來查詢數據。如何獲取Cassandra中所有記錄的主鍵?
我可以從卡桑德拉的data
目錄中找到它嗎?我只在該目錄中找到.db文件。
你在哪個版本的卡桑德拉?如果你在卡桑德拉3,你可以查詢在命令行system_schema.columns,和grep主鍵的部分是這樣的:
$ 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
請注意,如果要通過keyspace和table篩選這些結果,可以在WHERE子句中指定這些結果。
我不想要主鍵的架構。我想得到的是主鍵的價值。 – niaomingjian
您需要使用TOKEN函數以避免未綁定的SELECT * FROM xxx;
查詢。 This external post解釋瞭如何遍歷所有數據集,但您可以通過非常小的努力將其應用於您的用例。
爲了讓你可以使用不同的定製列表中的主鍵值:
cqlsh> select distinct pkey_column FROM table;
或具有多個:
cqlsh> select distinct pkey_column_1, pkey_column_2 FROM table;
有沒有這樣的功能...可能是你可以試試'COPY TABLE_NAME (column_name)TO file_name.csv' –
我可以使用某些工具從'data'目錄獲得主鍵嗎? – niaomingjian
此COPY命令將在DevCenter以及cqlsh中工作...數據目錄將只包含部分數據(數據分佈在不同節點上) –