[
https://issues.apache.org/jira/browse/CASSANDRA-6704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13902440#comment-13902440
]
Edward Capriolo edited comment on CASSANDRA-6704 at 2/15/14 3:41 PM:
---------------------------------------------------------------------
{quote}
They are also expressing concern that it will create a polluted vision of the
future of C*, .{quote}
That is an invalid concern. You are saying that my working code is polluting
some future vision of Cassandra. All I see from CASSANDRA-6167 and friends is
tickets with some talk, no action, and few followers. Suggesting my code go
into a fork because it may be redundant with some undone future work by someone
else is just plain silly.
Saying that users will be confused by two ways to do something is not a
concern. If you could argue that some of those other features would be done in
1 week or 1 month maybe, but in reality they look very far off. Even if they
were close. Again they are different features.
was (Author: appodictic):
{quote}
They are also expressing concern that it will create a polluted vision of the
future of C*, .{quote}
That is an invalid concern. You are saying that my working code is polluting
some future vision of Cassandra. All I see from CASSANDRA-6167 and friends is
tickets with some talk, no action, and few followers. Suggesting my code go
into a fork because it may be redundant with some undone future work by someone
else is just plain silly.
Saying that users will be confused by two ways to do something is not a
concern. If you could argue that some of those other features would be done in
1 week or 1 month maybe, but in reality they look very far off.
> Create wide row scanners
> ------------------------
>
> Key: CASSANDRA-6704
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6704
> Project: Cassandra
> Issue Type: New Feature
> Reporter: Edward Capriolo
> Assignee: Edward Capriolo
>
> The BigTable white paper demonstrates the use of scanners to iterate over
> rows and columns.
> http://static.googleusercontent.com/media/research.google.com/en/us/archive/bigtable-osdi06.pdf
> Because Cassandra does not have a primary sorting on row keys scanning over
> ranges of row keys is less useful.
> However we can use the scanner concept to operate on wide rows. For example
> many times a user wishes to do some custom processing inside a row and does
> not wish to carry the data across the network to do this processing.
> I have already implemented thrift methods to compile dynamic groovy code into
> Filters as well as some code that uses a Filter to page through and process
> data on the server side.
> https://github.com/edwardcapriolo/cassandra/compare/apache:trunk...trunk
> The following is a working code snippet.
> {code}
> @Test
> public void test_scanner() throws Exception
> {
> ColumnParent cp = new ColumnParent();
> cp.setColumn_family("Standard1");
> ByteBuffer key = ByteBuffer.wrap("rscannerkey".getBytes());
> for (char a='a'; a < 'g'; a++){
> Column c1 = new Column();
> c1.setName((a+"").getBytes());
> c1.setValue(new byte [0]);
> c1.setTimestamp(System.nanoTime());
> server.insert(key, cp, c1, ConsistencyLevel.ONE);
> }
>
> FilterDesc d = new FilterDesc();
> d.setSpec("GROOVY_CLASS_LOADER");
> d.setName("limit3");
> d.setCode("import org.apache.cassandra.dht.* \n" +
> "import org.apache.cassandra.thrift.* \n" +
> "public class Limit3 implements SFilter { \n " +
> "public FilterReturn filter(ColumnOrSuperColumn col,
> List<ColumnOrSuperColumn> filtered) {\n"+
> " filtered.add(col);\n"+
> " return filtered.size()< 3 ? FilterReturn.FILTER_MORE :
> FilterReturn.FILTER_DONE;\n"+
> "} \n" +
> "}\n");
> server.create_filter(d);
>
>
> ScannerResult res = server.create_scanner("Standard1", "limit3", key,
> ByteBuffer.wrap("a".getBytes()));
> Assert.assertEquals(3, res.results.size());
> }
> {code}
> I am going to be working on this code over the next few weeks but I wanted to
> get the concept our early so the design can see some criticism.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)