Re: Custom Iterator output

2015-04-27 Thread vaibhav thapliyal
Thanks Dylan for the help. It helped me a lot.
On 18-Apr-2015 10:43 am, Dylan Hutchison dhutc...@mit.edu wrote:

 Hi Vaibhav,

 It sounds like you want to emit a single value that is a function of all
 the entries in the parent iterator.  In that case, the following template
 should solve your problem, using the example of summing Values interpreted
 as Longs:

 /**
  * Emit one value that is a function of entries from the parent iterator.
  */
 public class SingleOutputIterator extends WrappingIterator {
   private static final TypedValueCombiner.EncoderLong encoder = new 
 LongCombiner.StringEncoder();
   private Key emitKey;
   private Value emitValue;

   @Override
   public void seek(Range range, CollectionByteSequence columnFamilies, 
 boolean inclusive) throws IOException {
 super.seek(range, columnFamilies, inclusive);
 myFunction();
   }

   /**
* Reads all entries from the parent iterator, computing the value you want 
 to emit.
* Example given is summing the Values of parent entries, interpreted as 
 Longs.
*/
   private void myFunction() throws IOException {
 Long val = 0l;
 while (super.hasTop()) {
   val += encoder.decode(super.getTopValue().get());
   super.next();
 }
 emitKey = new Key(); // replace this with the key you want to emit
 emitValue = new Value(encoder.encode(val));
   }

   @Override
   public Key getTopKey() {
 return emitKey;
   }

   @Override
   public Value getTopValue() {
 return emitValue;
   }

   @Override
   public boolean hasTop() {
 return emitKey != null;
   }

   @Override
   public void next() throws IOException {
 emitKey = null;
 emitValue = null;
   }
 }

 Regards,
 Dylan Hutchison



 On Fri, Apr 17, 2015 at 8:05 PM, vaibhav thapliyal 
 vaibhav.thapliyal...@gmail.com wrote:

 Hi,

 I also had this query that might be similar to shweta.

 What I want to do is process the key value pairs that I get from
 getTopKey() and getTopValue() methods and I want to output that value.

 Currently I was writing these values to tables from inside the iterators,
 but I read in the new manual that says that doing this isn't a good
 practice.

 For eg:

 If I have these entries in my table:

 1 cf1:cq1 value1
 2 cf2:cq2 value2
 3 cf3:cq3 value3
 And suppose I sum the values(or do any opeation) of the row ids using the
 values that I get from the getTopKey().getRow() function and store this sum
 in a variable called sum.

 So I want to output this variable. How do I go about this?

 Thanks
 Vaibhav
 On 17-Apr-2015 6:40 pm, dlmar...@comcast.net wrote:

 via the getTopKey() and getTopValue() methods. [1] should be a simple
 example.

 [1]
 https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=blob;f=core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java;h=043a729a778fc34d2ee87a0227056ffac81b7fe7;hb=refs/heads/master

 --
 *From: *shweta.agrawal shweta.agra...@orkash.com
 *To: *user@accumulo.apache.org
 *Sent: *Friday, April 17, 2015 8:50:26 AM
 *Subject: *Custom Iterator output

 Hi,

 I am working on custom iterator. I want to know, how do i get the output
 from the custom iterators?

 Thanks and Regards
 Shweta





Re: Custom Iterator output

2015-04-17 Thread dlmarion
via the getTopKey() and getTopValue() methods. [1] should be a simple example. 

[1] 
https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=blob;f=core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java;h=043a729a778fc34d2ee87a0227056ffac81b7fe7;hb=refs/heads/master
 

- Original Message -

From: shweta.agrawal shweta.agra...@orkash.com 
To: user@accumulo.apache.org 
Sent: Friday, April 17, 2015 8:50:26 AM 
Subject: Custom Iterator output 

Hi, 

I am working on custom iterator. I want to know, how do i get the output 
from the custom iterators? 

Thanks and Regards 
Shweta 



Re: Custom Iterator output

2015-04-17 Thread Dylan Hutchison
Hi Vaibhav,

It sounds like you want to emit a single value that is a function of all
the entries in the parent iterator.  In that case, the following template
should solve your problem, using the example of summing Values interpreted
as Longs:

/**
 * Emit one value that is a function of entries from the parent iterator.
 */
public class SingleOutputIterator extends WrappingIterator {
  private static final TypedValueCombiner.EncoderLong encoder = new
LongCombiner.StringEncoder();
  private Key emitKey;
  private Value emitValue;

  @Override
  public void seek(Range range, CollectionByteSequence
columnFamilies, boolean inclusive) throws IOException {
super.seek(range, columnFamilies, inclusive);
myFunction();
  }

  /**
   * Reads all entries from the parent iterator, computing the value
you want to emit.
   * Example given is summing the Values of parent entries,
interpreted as Longs.
   */
  private void myFunction() throws IOException {
Long val = 0l;
while (super.hasTop()) {
  val += encoder.decode(super.getTopValue().get());
  super.next();
}
emitKey = new Key(); // replace this with the key you want to emit
emitValue = new Value(encoder.encode(val));
  }

  @Override
  public Key getTopKey() {
return emitKey;
  }

  @Override
  public Value getTopValue() {
return emitValue;
  }

  @Override
  public boolean hasTop() {
return emitKey != null;
  }

  @Override
  public void next() throws IOException {
emitKey = null;
emitValue = null;
  }
}

Regards,
Dylan Hutchison



On Fri, Apr 17, 2015 at 8:05 PM, vaibhav thapliyal 
vaibhav.thapliyal...@gmail.com wrote:

 Hi,

 I also had this query that might be similar to shweta.

 What I want to do is process the key value pairs that I get from
 getTopKey() and getTopValue() methods and I want to output that value.

 Currently I was writing these values to tables from inside the iterators,
 but I read in the new manual that says that doing this isn't a good
 practice.

 For eg:

 If I have these entries in my table:

 1 cf1:cq1 value1
 2 cf2:cq2 value2
 3 cf3:cq3 value3
 And suppose I sum the values(or do any opeation) of the row ids using the
 values that I get from the getTopKey().getRow() function and store this sum
 in a variable called sum.

 So I want to output this variable. How do I go about this?

 Thanks
 Vaibhav
 On 17-Apr-2015 6:40 pm, dlmar...@comcast.net wrote:

 via the getTopKey() and getTopValue() methods. [1] should be a simple
 example.

 [1]
 https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=blob;f=core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java;h=043a729a778fc34d2ee87a0227056ffac81b7fe7;hb=refs/heads/master

 --
 *From: *shweta.agrawal shweta.agra...@orkash.com
 *To: *user@accumulo.apache.org
 *Sent: *Friday, April 17, 2015 8:50:26 AM
 *Subject: *Custom Iterator output

 Hi,

 I am working on custom iterator. I want to know, how do i get the output
 from the custom iterators?

 Thanks and Regards
 Shweta




Re: Custom Iterator output

2015-04-17 Thread vaibhav thapliyal
Hi,

I also had this query that might be similar to shweta.

What I want to do is process the key value pairs that I get from
getTopKey() and getTopValue() methods and I want to output that value.

Currently I was writing these values to tables from inside the iterators,
but I read in the new manual that says that doing this isn't a good
practice.

For eg:

If I have these entries in my table:

1 cf1:cq1 value1
2 cf2:cq2 value2
3 cf3:cq3 value3
And suppose I sum the values(or do any opeation) of the row ids using the
values that I get from the getTopKey().getRow() function and store this sum
in a variable called sum.

So I want to output this variable. How do I go about this?

Thanks
Vaibhav
On 17-Apr-2015 6:40 pm, dlmar...@comcast.net wrote:

 via the getTopKey() and getTopValue() methods. [1] should be a simple
 example.

 [1]
 https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=blob;f=core/src/main/java/org/apache/accumulo/core/iterators/user/GrepIterator.java;h=043a729a778fc34d2ee87a0227056ffac81b7fe7;hb=refs/heads/master

 --
 *From: *shweta.agrawal shweta.agra...@orkash.com
 *To: *user@accumulo.apache.org
 *Sent: *Friday, April 17, 2015 8:50:26 AM
 *Subject: *Custom Iterator output

 Hi,

 I am working on custom iterator. I want to know, how do i get the output
 from the custom iterators?

 Thanks and Regards
 Shweta