Class ApproximateDistinct.HyperLogLogPlusCoder

java.lang.Object
org.apache.beam.sdk.coders.Coder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
org.apache.beam.sdk.coders.CustomCoder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
org.apache.beam.sdk.extensions.sketching.ApproximateDistinct.HyperLogLogPlusCoder
All Implemented Interfaces:
Serializable
Enclosing class:
ApproximateDistinct

public static class ApproximateDistinct.HyperLogLogPlusCoder extends CustomCoder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
Coder for HyperLogLogPlus class.
See Also:
  • Constructor Details

    • HyperLogLogPlusCoder

      public HyperLogLogPlusCoder()
  • Method Details

    • of

    • encode

      public void encode(com.clearspring.analytics.stream.cardinality.HyperLogLogPlus value, OutputStream outStream) throws IOException
      Description copied from class: Coder
      Encodes the given value of type T onto the given output stream. Multiple elements can be encoded next to each other on the output stream, each coder should encode information to know how many bytes to read when decoding. A common approach is to prefix the encoding with the element's encoded length.
      Specified by:
      encode in class Coder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
      Throws:
      IOException - if writing to the OutputStream fails for some reason
    • decode

      public com.clearspring.analytics.stream.cardinality.HyperLogLogPlus decode(InputStream inStream) throws IOException
      Description copied from class: Coder
      Decodes a value of type T from the given input stream in the given context. Returns the decoded value. Multiple elements can be encoded next to each other on the input stream, each coder should encode information to know how many bytes to read when decoding. A common approach is to prefix the encoding with the element's encoded length.
      Specified by:
      decode in class Coder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
      Throws:
      IOException - if reading from the InputStream fails for some reason
    • isRegisterByteSizeObserverCheap

      public boolean isRegisterByteSizeObserverCheap(com.clearspring.analytics.stream.cardinality.HyperLogLogPlus value)
      Description copied from class: Coder
      Returns whether Coder.registerByteSizeObserver(T, org.apache.beam.sdk.util.common.ElementByteSizeObserver) cheap enough to call for every element, that is, if this Coder can calculate the byte size of the element to be coded in roughly constant time (or lazily).

      Not intended to be called by user code, but instead by PipelineRunner implementations.

      By default, returns false. The default Coder.registerByteSizeObserver(T, org.apache.beam.sdk.util.common.ElementByteSizeObserver) implementation invokes Coder.getEncodedElementByteSize(T) which requires re-encoding an element unless it is overridden. This is considered expensive.

      Overrides:
      isRegisterByteSizeObserverCheap in class Coder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
    • getEncodedElementByteSize

      protected long getEncodedElementByteSize(com.clearspring.analytics.stream.cardinality.HyperLogLogPlus value) throws IOException
      Description copied from class: Coder
      Returns the size in bytes of the encoded value using this coder.
      Overrides:
      getEncodedElementByteSize in class Coder<com.clearspring.analytics.stream.cardinality.HyperLogLogPlus>
      Throws:
      IOException