2017-02-17 33 views
2

我已經插入了大量的數據到卡桑德拉。現在我想隨機查詢一條記錄。 但我不知道primary key。所以我想要一種方法來獲取Cassandra中的主鍵all data,然後我可以使用一個隨機主鍵來查詢數據。如何獲取Cassandra中所有記錄的主鍵?

我可以從卡桑德拉的data目錄中找到它嗎?我只在該目錄中找到.db文件。

+0

有沒有這樣的功能...可能是你可以試試'COPY TABLE_NAME (column_name)TO file_name.csv' –

+0

我可以使用某些工具從'data'目錄獲得主鍵嗎? – niaomingjian

+0

此COPY命令將在DevCenter以及cqlsh中工作...數據目錄將只包含部分數據(數據分佈在不同節點上) –

回答

3

你在哪個版本的卡桑德拉?如果你在卡桑德拉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子句中指定這些結果。

+0

我不想要主鍵的架構。我想得到的是主鍵的價值。 – niaomingjian

0

您需要使用TOKEN函數以避免未綁定的SELECT * FROM xxx;查詢。 This external post解釋瞭如何遍歷所有數據集,但您可以通過非常小的努力將其應用於您的用例。

1

爲了讓你可以使用不同的定製列表中的主鍵值:

cqlsh> select distinct pkey_column FROM table; 

或具有多個:

cqlsh> select distinct pkey_column_1, pkey_column_2 FROM table; 
相關問題