class TopPctCMSMonoid[K] extends TopCMSMonoid[K]
Monoid for Top-% based TopCMS sketches.
Usage
The type K
is the type of items you want to count. You must provide an implicit CMSHasher[K]
for K
, and
Algebird ships with several such implicits for commonly used types such as Long
and BigInt
.
If your type K
is not supported out of the box, you have two options: 1) You provide a "translation" function to
convert items of your (unsupported) type K
to a supported type such as Double, and then use the contramap
function of CMSHasher to create the required CMSHasher[K]
for your type (see the documentation of CMSHasher
for an example); 2) You implement a CMSHasher[K]
from scratch, using the existing CMSHasher implementations as a
starting point.
Note: Because Arrays in Scala/Java not have sane equals
and hashCode
implementations, you cannot safely use types
such as Array[Byte]
. Extra work is required for Arrays. For example, you may opt to convert Array[T]
to a
Seq[T]
via toSeq
, or you can provide appropriate wrapper classes. Algebird provides one such wrapper class,
Bytes, to safely wrap an Array[Byte]
for use with CMS.
- K
The type used to identify the elements to be counted. For example, if you want to count the occurrence of user names, you could map each username to a unique numeric ID expressed as a
Long
, and then count the occurrences of thoseLong
s with a CMS of typeK=Long
. Note that this mapping between the elements of your problem domain and their identifiers used for counting via CMS should be bijective. We require a CMSHasher context bound forK
, see CMSHasher for available implicits that can be imported. Which type K should you pick in practice? For domains that have less than2^64
unique elements, you'd typically use
Long. For larger domains you can try
BigInt, for example.
- Alphabetic
- By Inheritance
- TopPctCMSMonoid
- TopCMSMonoid
- Monoid
- AdditiveMonoid
- Monoid
- Semigroup
- AdditiveSemigroup
- Semigroup
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new TopPctCMSMonoid(cms: CMS[K], heavyHittersPct: Double = 0.01)
- cms
A CMS instance, which is used for the counting and the frequency estimation performed by this class.
- heavyHittersPct
A threshold for finding heavy hitters, i.e., elements that appear at least (heavyHittersPct * totalCount) times in the stream.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def additive: algebra.Monoid[TopCMS[K]]
These are from algebra.Monoid
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def assertNotZero(v: TopCMS[K]): Unit
- Definition Classes
- Monoid
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def combine(l: TopCMS[K], r: TopCMS[K]): TopCMS[K]
- Definition Classes
- Semigroup → Semigroup
- def combineAll(t: TraversableOnce[TopCMS[K]]): TopCMS[K]
- Definition Classes
- Monoid → Monoid
- def combineAllOption(as: IterableOnce[TopCMS[K]]): Option[TopCMS[K]]
- Definition Classes
- Monoid → Semigroup
- def combineN(a: TopCMS[K], n: Int): TopCMS[K]
- Definition Classes
- Monoid → Semigroup
- def create(data: Seq[K]): TopCMS[K]
Creates a sketch out of multiple items.
Creates a sketch out of multiple items.
- Definition Classes
- TopCMSMonoid
- def create(item: K): TopCMS[K]
Creates a sketch out of a single item.
Creates a sketch out of a single item.
- Definition Classes
- TopCMSMonoid
- def empty: TopCMS[K]
- Definition Classes
- Monoid → Monoid
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def isEmpty(a: TopCMS[K])(implicit ev: Eq[TopCMS[K]]): Boolean
- Definition Classes
- Monoid
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isNonZero(v: TopCMS[K]): Boolean
- Definition Classes
- Monoid
- def isZero(a: TopCMS[K])(implicit ev: Eq[TopCMS[K]]): Boolean
- Definition Classes
- AdditiveMonoid
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def nonZeroOption(v: TopCMS[K]): Option[TopCMS[K]]
- Definition Classes
- Monoid
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- val params: TopCMSParams[K]
- Definition Classes
- TopCMSMonoid
- def plus(left: TopCMS[K], right: TopCMS[K]): TopCMS[K]
Combines the two sketches.
Combines the two sketches.
The sketches must use the same hash functions.
- Definition Classes
- TopCMSMonoid → AdditiveSemigroup
- def positiveSumN(a: TopCMS[K], n: Int): TopCMS[K]
- Attributes
- protected[this]
- Definition Classes
- AdditiveSemigroup
- def repeatedCombineN(a: TopCMS[K], n: Int): TopCMS[K]
- Attributes
- protected[this]
- Definition Classes
- Semigroup
- def sum(sketches: TraversableOnce[TopCMS[K]]): TopCMS[K]
- Definition Classes
- TopCMSMonoid → Monoid → AdditiveMonoid
- def sumN(a: TopCMS[K], n: Int): TopCMS[K]
- Definition Classes
- AdditiveMonoid → AdditiveSemigroup
- def sumOption(sketches: TraversableOnce[TopCMS[K]]): Option[TopCMS[K]]
Returns an instance of
T
calculated by summing all instances initer
in one pass.Returns an instance of
T
calculated by summing all instances initer
in one pass. ReturnsNone
ifiter
is empty, elseSome[T]
.- returns
None
ifiter
is empty, else an option value containing the summedT
- Definition Classes
- TopCMSMonoid → Semigroup
- Note
Override if there is a faster way to compute this sum than
iter.reduceLeftOption
using plus.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def trySum(as: TraversableOnce[TopCMS[K]]): Option[TopCMS[K]]
- Definition Classes
- AdditiveMonoid → AdditiveSemigroup
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- val zero: TopCMS[K]
- Definition Classes
- TopCMSMonoid → AdditiveMonoid