2013-06-24 22 views
-1

我只是C *世界的一週大。我使用copy命令從約csv文件(23 GB)上傳數據。用複製命令將數據導入cassandra

我需要獲得列族的行數,以確保行成功插入。我讀了兩種方法來執行此操作:

從限制2000000中選擇count(*); 使用nodestats工具woth cfstas命令並檢查結果中的「鍵數(估計值)」 我嘗試了選項(1),但我一直在等待很長時間而沒有任何結果。然後我嘗試了選項(2)。然而,我發現鍵數(估計)隨着時間而減少。這是我的節點工具的輸出 命令的一部分:

nodetool --host 54.225.108.245 cfstats

O/P:

Keyspace: cookie_udp_ja_meta 
    Read Count: 0 
    Read Latency: NaN ms. 
    Write Count: 215724 
    Write Latency: 1.1088440368248316 ms. 
    Pending Tasks: 0 
      Column Family: rpt_true_metric 
      SSTable count: 7 
      Space used (live): 741159354 
      Space used (total): 741160083 
      Number of Keys (estimate): 896 
      Memtable Columns Count: 437886 
      Memtable Data Size: 61865984 
      Memtable Switch Count: 9 
      Read Count: 0 
      Read Latency: NaN ms. 
      Write Count: 215725 
      Write Latency: 1.074 ms. 
      Pending Tasks: 0 
      Bloom Filter False Positives: 0 
      Bloom Filter False Ratio: 0.00000 
      Bloom Filter Space Used: 7792 

鍵(估計)的數目是896,當我跑的前5分鐘命令和1024分鐘前3分鐘。但是我注意到keyspace的'Write Count:324654'值正在增加。

我很困惑,如果我的複製命令正確導入數據,因爲即使大約30分鐘後操作仍未完成。請告知..

+0

您可以從我的博客文章中找到正在發生的事情:http://www.wentnet.com/blog/?p=24計數減少的原因可能是由於壓縮消除了現在過時的SSTables。 – Richard

+0

感謝您的輸入。我讀了你的博客,並相應地nodetool compactnt ..但現在,鍵(估計)數的數量進一步減少到128.現在SStable計數爲1。 但是,選擇計數(*)查詢返回的值爲10000.我肯定有超過10^6個記錄,因爲數據文件夾的大小增加了近2 GB .. – eldho

+0

select count(*)返回什麼值?它看起來像是將許多列插入到相同的行中,可能會覆蓋這些列。 – Richard

回答

0

您需要等到加載完成,得到了行計數的替代方法在這個外螺紋描述:http://www.datastax.com/support-forums/topic/row-count-for-a-given-column-family

在我的情況下,SELECT COUNT(*)cqlsh命令即使加載完成後也會產生RPC命令超時。這是因爲Cassandra中的一個非常昂貴的操作,它的成功基本上取決於您的機器的穩健性以及cassandra.yaml中的RPC超時值。

+0

在我的情況下,它也給了一個RPC超時錯誤。似乎只有在完成整個複製操作並完成插入之後,'Keys(估計)'纔會給出適當的值。但我仍然想知道在Keyspace下給出的寫入計數值是否會給出大致的行數,因爲它似乎隨着時間呈線性增加。 – eldho

+1

寫入次數是寫入操作的次數,所以總是會增加(直到節點重新啓動)。如果您只寫一次行,那麼它將是行數(假設沒有超時和重試),否則它會更大。 – Richard

+0

@理查德謝謝..這清除了我的懷疑。 – eldho