Skip to content
This repository was archived by the owner on Jul 7, 2020. It is now read-only.

Possibly out of range #90

Open
ahmadpriatama opened this issue Apr 16, 2015 · 1 comment
Open

Possibly out of range #90

ahmadpriatama opened this issue Apr 16, 2015 · 1 comment

Comments

@ahmadpriatama
Copy link

I'm using com.clearspring.analytics.stream.quantile.QDigest class to approximate 100k datum, which is possibly summing this will result higher than int64 range. Found this when running on amazon EMR

Caused by: java.lang.IllegalArgumentException: Can only accept values in the range 0..4611686018427387903, got 9223372036854775807
    at com.clearspring.analytics.stream.quantile.QDigest.offer(QDigest.java:125)
    at com.liveramp.cascading_ext.combiner.lib.QuantileExactAggregator.partialAggregate(QuantileExactAggregator.java:38)
    at com.liveramp.cascading_ext.combiner.lib.QuantileExactAggregator.partialAggregate(QuantileExactAggregator.java:17)
    at com.liveramp.cascading_ext.combiner.CombinerFunctionContext.combineAndEvict(CombinerFunctionContext.java:130)
    at com.liveramp.cascading_ext.combiner.CombinerFunction.operate(CombinerFunction.java:130)
    at cascading.flow.stream.FunctionEachStage.receive(FunctionEachStage.java:99)
    ... 11 more

i suppose because offer method parameter defined as long, is there any work around for this?

@tdunning
Copy link
Contributor

Q-digest will cost more on every access if it uses long internally.

Having high resolution inputs is something that t-digest specifically
excels at. I think some version of t-digest is included in streamlib.
Recent versions are very fast and beat Q-digest accuracy dramatically,
especially for high resolution inputs, for dramatic skew and for tail
quantiles (which is what almost everybody wants).

On Thu, Apr 16, 2015 at 4:35 AM, Ahmad Priatama [email protected]
wrote:

I'm using com.clearspring.analytics.stream.quantile.QDigest class to
approximate 100k datum, which is possibly summing this will result higher
than int64 range. Found this when running on amazon EMR

Caused by: java.lang.IllegalArgumentException: Can only accept values in the range 0..4611686018427387903, got 9223372036854775807
at com.clearspring.analytics.stream.quantile.QDigest.offer(QDigest.java:125)
at com.liveramp.cascading_ext.combiner.lib.QuantileExactAggregator.partialAggregate(QuantileExactAggregator.java:38)
at com.liveramp.cascading_ext.combiner.lib.QuantileExactAggregator.partialAggregate(QuantileExactAggregator.java:17)
at com.liveramp.cascading_ext.combiner.CombinerFunctionContext.combineAndEvict(CombinerFunctionContext.java:130)
at com.liveramp.cascading_ext.combiner.CombinerFunction.operate(CombinerFunction.java:130)
at cascading.flow.stream.FunctionEachStage.receive(FunctionEachStage.java:99)
... 11 more

i suppose because offer method parameter defined as long, is there any
work around for this?


Reply to this email directly or view it on GitHub
#90.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants