org.apache.hadoop.mapred.nativetask

## Interface INativeComparable

-     @InterfaceAudience.Public
       @InterfaceStability.Evolving
      public interface INativeComparable

  Any key type that is comparable at native side must implement this interface. A native comparator function should have the ComparatorPtr type: `typedef int (*ComparatorPtr)(const char * src, uint32_t srcLength, const char * dest, uint32_t destLength);` Keys are in serialized format at native side. The function has passed in the keys' locations and lengths such that we can compare them in the same logic as their Java comparator. For example, a HiveKey serialized as an int field (containing the length of raw bytes) + raw bytes. When comparing two HiveKeys, we first read the length field and then compare the raw bytes by invoking the BytesComparator provided by our library. We pass the location and length of raw bytes into BytesComparator. `int HivePlatform::HiveKeyComparator(const char * src, uint32_t srcLength, const char * dest, uint32_t destLength) { uint32_t sl = bswap(*(uint32_t*)src); uint32_t dl = bswap(*(uint32_t*)dest); return NativeObjectFactory::BytesComparator(src + 4, sl, dest + 4, dl); }`

Copyright © 2022 Apache Software Foundation. All rights reserved.