2012-09-18 75 views
2

我需要在卡桑德拉小POC,我需要創建以下類型的列族:我可以在cassandra中創建以下列家族嗎?

用戶提供唯一的字符串ID(例如「1234」)應存儲由時間戳下令所有進來的他的消息。

"1234"=> 
    [ 
     1348008041376000 : { target_uid : 4321, msg : "Hello, how are you?" }, 
     1348008041377000 : { target_uid : 3213, msg : "And how Are you?" } 
    ] , 
    "4321"=> 
    [ 
     1348008041376000 : { target_uid : 1234, msg : "Thank you I'm fine." }, 
     1348008041377000 : { target_uid : 2345, msg : "And how Are you?" } 
    ] 

我用Google搜索了很久,已經看到很多的例子,但我仍然無法實現它應該是什麼類型的列族的?

我完全新的卡桑德拉,我知道它聽起來像功課:),但請幫助。

更新:

我試圖創建以下CLI創建家庭列,但它似乎並沒有工作。

CREATE COLUMN FAMILY messages with comparator = DateType and key_validation_class=UTF8Type AND column_metadata=[ {column_name: msg, validation_class: UTF8Type}]; 
java.lang.RuntimeException: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 'msg' to a formatted date (long) 

你可以請cli語法幫忙嗎?

回答

2

這應該對1.1之前的版本有用。它假定你將JSON值存儲在一個寬行中(你管理自己的序列化)。

CREATE COLUMNFAMILY Example 
    (user_id text PRIMARY KEY) 
    WITH comparator=timestamp; 

對於1.1版本開始,看看這個文件爲進一步指導:http://www.datastax.com/dev/blog/schema-in-cassandra-1-1

+0

感謝您的迴應,我只是試圖做到這一點的CLI和我它根據我的理解創建查詢將會和你的查詢一樣,但有些事情是錯誤的。你能幫忙嗎? –

+0

您已將比較器(列名稱)定義爲DateType類型,然後在列元數據中重新定義基於文本的列名稱「msg」。第一種技術適用於動態列系列,第二種適用於靜態列系列。你需要做一個或另一個。 – phatfingers

+0

使用'default_validation_class'而不是'column_metadata'。 – phatfingers

相關問題