Java 卡桑德拉散装装载机

Java 卡桑德拉散装装载机,java,cassandra,cassandra-2.0,Java,Cassandra,Cassandra 2.0,我尝试了上面的简单示例来生成sstables。但是 public class SimpleLoadExample { /** Default output directory */ public static final String DEFAULT_OUTPUT_DIR = "/home/tamil/bdata"; public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy

我尝试了上面的简单示例来生成sstables。但是

public class SimpleLoadExample
{
    /** Default output directory */
    public static final String DEFAULT_OUTPUT_DIR = "/home/tamil/bdata";

    public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

    /** Keyspace name */
    public static final String KEYSPACE = "test";
    /** Table name */
    public static final String TABLE = "counter";

    public static final String SCHEMA = "CREATE TABLE test.counter (" +
            "id varchar PRIMARY KEY," +
            "count counter" +
            ")";

    public static void main(String[] args) throws InvalidRequestException, IOException {
        Config.setClientMode(true);
        File outputDir = new File(DEFAULT_OUTPUT_DIR + File.separator + KEYSPACE + File.separator + TABLE);
        if (!outputDir.exists() && !outputDir.mkdirs())
        {
            throw new RuntimeException("Cannot create output directory: " + outputDir);
        }
        SSTableSimpleUnsortedWriter writer = new SSTableSimpleUnsortedWriter(outputDir, new Murmur3Partitioner(), KEYSPACE, TABLE, CounterColumnType.instance, null, 1000);
        writer.newRow(bytes("2"));
        writer.addCounterColumn(bytes("count"), 10L);
        try
        {
            writer.close();
        }
        catch (IOException ignore) {
            System.out.println(ignore);
        }
    }
}
有人能告诉我哪里出了问题吗


是我在网上找到的。但我假设我的比较器[同时尝试了UTF8Type和CounterColumn]是完美的。还有什么可能导致此缓冲区问题?

最后,下面的代码工作正常。将其作为参考发布,供人们关注

ERROR 21:05:14,287 Missing component: /home/tamil/bdata/test/counter/test-counter-jb-1-Summary.db
    [
    {"key": "32","columns": [Exception in thread "main" java.lang.IllegalArgumentException
        at java.nio.Buffer.limit(Buffer.java:267)
        at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:587)
        at org.apache.cassandra.utils.ByteBufferUtil.readBytesWithShortLength(ByteBufferUtil.java:596)
        at org.apache.cassandra.db.marshal.AbstractCompositeType.getString(AbstractCompositeType.java:203)
        at org.apache.cassandra.tools.SSTableExport.serializeColumn(SSTableExport.java:183)
        at org.apache.cassandra.tools.SSTableExport.serializeAtom(SSTableExport.java:152)
        at org.apache.cassandra.tools.SSTableExport.serializeAtoms(SSTableExport.java:140)
        at org.apache.cassandra.tools.SSTableExport.serializeRow(SSTableExport.java:238)
        at org.apache.cassandra.tools.SSTableExport.serializeRow(SSTableExport.java:223)
        at org.apache.cassandra.tools.SSTableExport.export(SSTableExport.java:374)
        at org.apache.cassandra.tools.SSTableExport.export(SSTableExport.java:399)
        at org.apache.cassandra.tools.SSTableExport.export(SSTableExport.java:411)
        at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:494)
如果你能做到这一点就更好了

SSTableSimpleUnsortedWriter writer = new SSTableSimpleUnsortedWriter(outputDir, new Murmur3Partitioner(), KEYSPACE, TABLE, CompositeType.getInstance(UTF8Type.instance), null, 1000);
writer.newRow(bytes("2"));
ByteBuffer name = CompositeType.getInstance(UTF8Type.instance).builder().add(bytes("count")).build();
writer.addCounterColumn(name, 10L);

最后,下面的代码成功了。将其作为参考发布,供人们关注

ERROR 21:05:14,287 Missing component: /home/tamil/bdata/test/counter/test-counter-jb-1-Summary.db
    [
    {"key": "32","columns": [Exception in thread "main" java.lang.IllegalArgumentException
        at java.nio.Buffer.limit(Buffer.java:267)
        at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:587)
        at org.apache.cassandra.utils.ByteBufferUtil.readBytesWithShortLength(ByteBufferUtil.java:596)
        at org.apache.cassandra.db.marshal.AbstractCompositeType.getString(AbstractCompositeType.java:203)
        at org.apache.cassandra.tools.SSTableExport.serializeColumn(SSTableExport.java:183)
        at org.apache.cassandra.tools.SSTableExport.serializeAtom(SSTableExport.java:152)
        at org.apache.cassandra.tools.SSTableExport.serializeAtoms(SSTableExport.java:140)
        at org.apache.cassandra.tools.SSTableExport.serializeRow(SSTableExport.java:238)
        at org.apache.cassandra.tools.SSTableExport.serializeRow(SSTableExport.java:223)
        at org.apache.cassandra.tools.SSTableExport.export(SSTableExport.java:374)
        at org.apache.cassandra.tools.SSTableExport.export(SSTableExport.java:399)
        at org.apache.cassandra.tools.SSTableExport.export(SSTableExport.java:411)
        at org.apache.cassandra.tools.SSTableExport.main(SSTableExport.java:494)
如果你能做到这一点就更好了

SSTableSimpleUnsortedWriter writer = new SSTableSimpleUnsortedWriter(outputDir, new Murmur3Partitioner(), KEYSPACE, TABLE, CompositeType.getInstance(UTF8Type.instance), null, 1000);
writer.newRow(bytes("2"));
ByteBuffer name = CompositeType.getInstance(UTF8Type.instance).builder().add(bytes("count")).build();
writer.addCounterColumn(name, 10L);