Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
HBase, mail # user - median through AggregationProtocol


Copy link to this message
-
Re: median through AggregationProtocol
Ted Yu 2012-01-23, 18:03
Royston / Tom:
I would encourage you to explore other aggregations where
AggregationProtocol is of help.

Feel free to discuss any limitation in current implementation, propose
suggestions, etc.

Thanks

On Mon, Jan 23, 2012 at 9:03 AM, Ted Yu <[EMAIL PROTECTED]> wrote:

> Thanks Tom for the investigation.
> I will apply the null check in an addendum to HBASE-5139.
>
> Operation.toJSON() does bring in Jackson JSON processor
> Please confirm that the jackson jars are in your CLASSPATH:
> $ ls lib/*jackson*
> lib/jackson-core-asl-1.5.5.jar  lib/jackson-jaxrs-1.5.5.jar
> lib/jackson-mapper-asl-1.5.5.jar  lib/jackson-xc-1.5.5.jar
>
> Looks like you haven't encountered the need to print contents of Scan so
> far.
> If you feel the dependency on jackson is burdensome, please file a JIRA so
> that we can relax this dependency.
>
> Cheers
>
>
> On Mon, Jan 23, 2012 at 8:35 AM, Tom Wilcox <[EMAIL PROTECTED]> wrote:
>
>> Hi Ted,
>>
>> Following from what you have said, we have edited AggregateClient.java
>> with the following modification to the median() method:
>>
>> ...
>>
>>    // scan the region with median and find it
>>    Scan scan2 = new Scan(scan);
>>     // inherit stop row from method parameter
>>     if (startRow != null)
>>      scan2.setStartRow(startRow);
>>     HTable table = new HTable(conf, tableName);
>>    int cacheSize = scan2.getCaching();
>>    if (!scan2.getCacheBlocks() || scan2.getCaching() < 2) {
>>      scan2.setCacheBlocks(true);
>>      cacheSize = 5;
>>      scan2.setCaching(cacheSize);
>>    }
>>
>> //    log.debug("scan:\t" + scan);
>> //    log.debug("scan2:\t" + scan2);
>>
>>    ResultScanner scanner = table.getScanner(scan2);
>>
>> ...
>>
>> The addition of "if (startRow != null) scan2.setStartRow(startRow);" has
>> fixed our NPE/Memory issue and we now see a sensible result successfully
>> returned.
>>
>> However, in the process of debugging this, I added some
>> 'log.debug("scan:\t" + scan);' statements as you can see in the snippet
>> above. These lines (when uncommented) were causing the following exception:
>>
>> [sshexec] java.lang.NoSuchMethodError:
>> org.codehaus.jackson.map.ObjectMapper.writeValueAsString(Ljava/lang/Object;)Ljava/lang/String;
>>  [sshexec]
>>  [sshexec]     at
>> org.apache.hadoop.hbase.client.Operation.toJSON(Operation.java:67)
>>  [sshexec]
>>  [sshexec]     at
>> org.apache.hadoop.hbase.client.Operation.toString(Operation.java:93)
>>  [sshexec]
>>  [sshexec]     at
>> org.apache.hadoop.hbase.client.Operation.toString(Operation.java:107)
>>  [sshexec]
>>  [sshexec]     at java.lang.String.valueOf(String.java:2826)
>>  [sshexec]     at java.lang.StringBuilder.append(StringBuilder.java:115)
>>  [sshexec]     at
>> org.apache.hadoop.hbase.client.coprocessor.AggregationClient.median(AggregationClient.java:473)
>>  [sshexec]     at
>> uk.org.cse.aggregation.EDRPAggregator.testSumWithValidRange(EDRPAggregator.java:55)
>>   [sshexec]     at
>> uk.org.cse.aggregation.EDRPAggregator.main(EDRPAggregator.java:85)
>>  [sshexec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>>  [sshexec]     at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>   [sshexec]     at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>   [sshexec]     at java.lang.reflect.Method.invoke(Method.java:597)
>>  [sshexec]     at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
>>
>> Do you have any idea why we got this error above? It seems the scanner
>> toString() method requires the Jackson JSON processor, which is failing for
>> some reason...
>>
>> Also, please can you tell me where log.debug() output can be found? (e.g.
>> $HBASE_HOME/logs/xxx-region-....log?)
>>
>> Please find a patch attached with the fixed median method for HBase 0.92
>> branch. Note that I have removed the log.debug() statements.
>>
>> Thanks,
>> Tom
>>
>> -----Original Message-----
>> From: Ted Yu [mailto:[EMAIL PROTECTED]]
>> Sent: 23 January 2012 15:24