Class ApproximateDistinct.PerKeyDistinct<K,V>
- Type Parameters:
K
- type of the keys mapping the elementsV
- type of the values being combined per key
- All Implemented Interfaces:
Serializable
,HasDisplayData
- Enclosing class:
ApproximateDistinct
ApproximateDistinct.perKey()
.- See Also:
-
Field Summary
Fields inherited from class org.apache.beam.sdk.transforms.PTransform
annotations, displayData, name, resourceHints
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionPCollection
<KV<K, Long>> expand
(PCollection<KV<K, V>> input) Override this method to specify how thisPTransform
should be expanded on the givenInputT
.withPrecision
(int p) Sets the precisionp
.withSparsePrecision
(int sp) Sets the sparse representation's precisionsp
.Methods inherited from class org.apache.beam.sdk.transforms.PTransform
addAnnotation, compose, compose, getAdditionalInputs, getAnnotations, getDefaultOutputCoder, getDefaultOutputCoder, getDefaultOutputCoder, getKindString, getName, getResourceHints, populateDisplayData, setDisplayData, setResourceHints, toString, validate, validate
-
Constructor Details
-
PerKeyDistinct
public PerKeyDistinct()
-
-
Method Details
-
withPrecision
Sets the precisionp
.Keep in mind that
p
cannot be lower than 4, because the estimation would be too inaccurate.See
ApproximateDistinct.precisionForRelativeError(double)
andApproximateDistinct.relativeErrorForPrecision(int)
to have more information about the relationship between precision and relative error.- Parameters:
p
- the precision value for the normal representation
-
withSparsePrecision
Sets the sparse representation's precisionsp
.Values above 32 are not yet supported by the AddThis version of HyperLogLog+.
Fore more information about the sparse representation, read Google's paper available here.
- Parameters:
sp
- the precision of HyperLogLog+' sparse representation
-
expand
Description copied from class:PTransform
Override this method to specify how thisPTransform
should be expanded on the givenInputT
.NOTE: This method should not be called directly. Instead apply the
PTransform
should be applied to theInputT
using theapply
method.Composite transforms, which are defined in terms of other transforms, should return the output of one of the composed transforms. Non-composite transforms, which do not apply any transforms internally, should return a new unbound output and register evaluators (via backend-specific registration methods).
- Specified by:
expand
in classPTransform<PCollection<KV<K,
V>>, PCollection<KV<K, Long>>>
-