2013-10-11 184 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)));