2013-10-11 183 views
1

我已經做了散裝裝載機key_validation_class = LexicalUUIDType新行本code的幫助,但我已經改變了行鍵我key_validation_class = AsciiTypekey_validation_class = UTF8Type在爲了使字符串作爲行鍵批量加載在卡桑德拉:String作爲在卡桑德拉

create column family Users1 
    with key_validation_class=AsciiType 
    and comparator=AsciiType 
    AND column_metadata = [ 
    {column_name: timestamp1, validation_class: AsciiType} 
    {column_name: symbol, validation_class: AsciiType} 
    {column_name: Bid_Price, validation_class:AsciiType} 
    {column_name: Ask_Price, validation_class:AsciiType} 
    ]; 

我曾嘗試以使行鍵爲字符串類型,但收到錯誤或代碼中所有可能發生的變化,即使沒有usersWriter.newRow沒有ABL E要寫入的SSTable

while ((line = reader.readLine()) != null) 
    { 
     if (entry.parse(line, lineNumber)) 
     { 
      //usersWriter.newRow(uuid); 
      usersWriter.newRow(String.valueOf(lineNumber)); 
      usersWriter.addColumn(bytes("symbol"), bytes(entry.symbol), timestamp); 
      usersWriter.addColumn(bytes("timestamp1"), bytes(entry.timestamp1), timestamp); 
      usersWriter.addColumn(bytes("Bid_Price"), bytes(entry.Bid_Price), timestamp); 
      usersWriter.addColumn(bytes("Ask_Price"), bytes(entry.Ask_Price), timestamp); 
     } 
     lineNumber++; 
    } 

得到一個錯誤,因爲預期它只能採取字節緩衝區

usersWriter.newRow(String.valueOf(lineNumber)); 
        ^
required: ByteBuffer 
found: String 
reason: actual argument String cannot be converted to ByteBuffer by method invocation conversion 

任何幫助,使字符串作爲行鍵中的SSTable對上述列族definition.thanks。

回答

0

Using the Cassandra Bulk Loader

簡單作家的方法期待的行鍵, 列名和列值的ByteBuffers。將數據轉換爲字節是您的責任;這是bytes()方法的存在問題

所以,你應該寫的代碼如下:

usersWriter.newRow(bytes(String.valueOf(lineNumber)));