You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Aditya Muralidharan <Ad...@nisc.coop> on 2010/11/11 22:27:28 UTC

Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Is it possible for BinaryMemtable RowMutations to a ColumnFamily with supercolumns?

Re: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Posted by Ryan King <ry...@twitter.com>.
On Fri, Nov 12, 2010 at 7:33 AM, Aditya Muralidharan
<Ad...@nisc.coop> wrote:
> Thanks for the response. We're trying to get a general idea of the insert and retrieval performance, and we figured BinaryMemtable would be a great enabler for our bulk import scenarios. Normal thrift inserts are certainly fast, but it would be nice to get an idea of how BMT could improve our throughput.

Before you go trying to improve it, you should be sure that it needs
improvement.

> Are you able to share some general performance numbers for thrift/avro/bmt?

We've consistently found that BMT was unnecessary. We've always run
into some other limit first.

-ryan

RE: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Posted by Aditya Muralidharan <Ad...@nisc.coop>.
Thanks for the response. We're trying to get a general idea of the insert and retrieval performance, and we figured BinaryMemtable would be a great enabler for our bulk import scenarios. Normal thrift inserts are certainly fast, but it would be nice to get an idea of how BMT could improve our throughput.

Are you able to share some general performance numbers for thrift/avro/bmt?

Thanks.

AD


-----Original Message-----
From: Jonathan Ellis [mailto:jbellis@gmail.com] 
Sent: Thursday, November 11, 2010 8:23 PM
To: user
Subject: Re: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Before you dig into that, are you sure normal Thrift inserts are not
fast enough?

On Thu, Nov 11, 2010 at 4:41 PM, Aditya Muralidharan
<Ad...@nisc.coop> wrote:
> Pretty sure I could ask that better:
>
>
>
> Is it possible for me to perform RowMutations on BinaryMemtable for a
> ColumnFamily of type Super?
>
>
>
> The bmt_example seems to say that it's possible, but cassandra 0.7 b3 seems
> to disagree with the following:
>
>
>
> ERROR [MutationStage:38] 2010-11-11 13:47:37,383
> DebuggableThreadPoolExecutor.java (line 103) Error in ThreadPoolExecutor
>
> java.lang.RuntimeException: java.lang.UnsupportedOperationException: This
> operation is not supported for Super Columns.
>
>         at
> org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:54)
>
>         at
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62)
>
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>
>         at java.lang.Thread.run(Thread.java:619)
>
> Caused by: java.lang.UnsupportedOperationException: This operation is not
> supported for Super Columns.
>
>         at org.apache.cassandra.db.SuperColumn.value(SuperColumn.java:158)
>
>         at org.apache.cassandra.db.Table.load(Table.java:640)
>
>         at
> org.apache.cassandra.db.RowMutation.applyBinary(RowMutation.java:206)
>
>         at
> org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:44)
>
>
>
> The code in the bmt_example serializes the CF for the super columns and sets
> that as column data (made me scratch my head) on a different CF for the
> RowMutation. Attempting that causes the following exception:
>
>
>
> Caused by: java.io.IOException: Invalid localDeleteTime read: 0
>
>         at
> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:334)
>
>         at
> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:291)
>
>         at
> org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumns(ColumnFamilySerializer.java:129)
>
>         at
> org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamilySerializer.java:120)
>
>         at
> org.apache.cassandra.db.RowMutationSerializer.defreezeTheMaps(RowMutation.java:368)
>
>         at
> org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:378)
>
>         at
> org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:336)
>
>         at
> org.apache.cassandra.db.RowMutationMessageSerializer.deserialize(RowMutationMessage.java:84)
>
>         at
> org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:42)
>
>
>
> . which is basically because the CFSerializer is (rightly) expecting to
> deserialize a super column though the bmt_example serialized a Standard CF.
>
>
>
> Any help on BMT with supercolumns would be appreciated.
>
>
>
> Thanks.
>
>
>
> AD
>
>
>
>
>
> From: Aditya Muralidharan [mailto:Aditya.Muralidharan@nisc.coop]
> Sent: Thursday, November 11, 2010 3:27 PM
> To: user@cassandra.apache.org
> Subject: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns
>
>
>
> Is it possible for BinaryMemtable RowMutations to a ColumnFamily with
> supercolumns?



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com

Re: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Posted by Jonathan Ellis <jb...@gmail.com>.
Before you dig into that, are you sure normal Thrift inserts are not
fast enough?

On Thu, Nov 11, 2010 at 4:41 PM, Aditya Muralidharan
<Ad...@nisc.coop> wrote:
> Pretty sure I could ask that better:
>
>
>
> Is it possible for me to perform RowMutations on BinaryMemtable for a
> ColumnFamily of type Super?
>
>
>
> The bmt_example seems to say that it’s possible, but cassandra 0.7 b3 seems
> to disagree with the following:
>
>
>
> ERROR [MutationStage:38] 2010-11-11 13:47:37,383
> DebuggableThreadPoolExecutor.java (line 103) Error in ThreadPoolExecutor
>
> java.lang.RuntimeException: java.lang.UnsupportedOperationException: This
> operation is not supported for Super Columns.
>
>         at
> org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:54)
>
>         at
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62)
>
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>
>         at java.lang.Thread.run(Thread.java:619)
>
> Caused by: java.lang.UnsupportedOperationException: This operation is not
> supported for Super Columns.
>
>         at org.apache.cassandra.db.SuperColumn.value(SuperColumn.java:158)
>
>         at org.apache.cassandra.db.Table.load(Table.java:640)
>
>         at
> org.apache.cassandra.db.RowMutation.applyBinary(RowMutation.java:206)
>
>         at
> org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:44)
>
>
>
> The code in the bmt_example serializes the CF for the super columns and sets
> that as column data (made me scratch my head) on a different CF for the
> RowMutation. Attempting that causes the following exception:
>
>
>
> Caused by: java.io.IOException: Invalid localDeleteTime read: 0
>
>         at
> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:334)
>
>         at
> org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:291)
>
>         at
> org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumns(ColumnFamilySerializer.java:129)
>
>         at
> org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamilySerializer.java:120)
>
>         at
> org.apache.cassandra.db.RowMutationSerializer.defreezeTheMaps(RowMutation.java:368)
>
>         at
> org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:378)
>
>         at
> org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:336)
>
>         at
> org.apache.cassandra.db.RowMutationMessageSerializer.deserialize(RowMutationMessage.java:84)
>
>         at
> org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:42)
>
>
>
> … which is basically because the CFSerializer is (rightly) expecting to
> deserialize a super column though the bmt_example serialized a Standard CF.
>
>
>
> Any help on BMT with supercolumns would be appreciated.
>
>
>
> Thanks.
>
>
>
> AD
>
>
>
>
>
> From: Aditya Muralidharan [mailto:Aditya.Muralidharan@nisc.coop]
> Sent: Thursday, November 11, 2010 3:27 PM
> To: user@cassandra.apache.org
> Subject: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns
>
>
>
> Is it possible for BinaryMemtable RowMutations to a ColumnFamily with
> supercolumns?



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com

RE: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Posted by Aditya Muralidharan <Ad...@nisc.coop>.
Pretty sure I could ask that better:

Is it possible for me to perform RowMutations on BinaryMemtable for a ColumnFamily of type Super?

The bmt_example seems to say that it's possible, but cassandra 0.7 b3 seems to disagree with the following:

ERROR [MutationStage:38] 2010-11-11 13:47:37,383 DebuggableThreadPoolExecutor.java (line 103) Error in ThreadPoolExecutor
java.lang.RuntimeException: java.lang.UnsupportedOperationException: This operation is not supported for Super Columns.
        at org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:54)
        at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:62)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.UnsupportedOperationException: This operation is not supported for Super Columns.
        at org.apache.cassandra.db.SuperColumn.value(SuperColumn.java:158)
        at org.apache.cassandra.db.Table.load(Table.java:640)
        at org.apache.cassandra.db.RowMutation.applyBinary(RowMutation.java:206)
        at org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:44)

The code in the bmt_example serializes the CF for the super columns and sets that as column data (made me scratch my head) on a different CF for the RowMutation. Attempting that causes the following exception:

Caused by: java.io.IOException: Invalid localDeleteTime read: 0
        at org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:334)
        at org.apache.cassandra.db.SuperColumnSerializer.deserialize(SuperColumn.java:291)
        at org.apache.cassandra.db.ColumnFamilySerializer.deserializeColumns(ColumnFamilySerializer.java:129)
        at org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamilySerializer.java:120)
        at org.apache.cassandra.db.RowMutationSerializer.defreezeTheMaps(RowMutation.java:368)
        at org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:378)
        at org.apache.cassandra.db.RowMutationSerializer.deserialize(RowMutation.java:336)
        at org.apache.cassandra.db.RowMutationMessageSerializer.deserialize(RowMutationMessage.java:84)
        at org.apache.cassandra.db.BinaryVerbHandler.doVerb(BinaryVerbHandler.java:42)

... which is basically because the CFSerializer is (rightly) expecting to deserialize a super column though the bmt_example serialized a Standard CF.

Any help on BMT with supercolumns would be appreciated.

Thanks.

AD


From: Aditya Muralidharan [mailto:Aditya.Muralidharan@nisc.coop]
Sent: Thursday, November 11, 2010 3:27 PM
To: user@cassandra.apache.org
Subject: Cassandra 0.7 beta3 BinaryMemtable and Supercolumns

Is it possible for BinaryMemtable RowMutations to a ColumnFamily with supercolumns?