Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-10097

Extend JenkinsHash package interface to allow increased code sharing



    • Type: Improvement
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:


      I copied some code from org.apache.hadoop.util.hash.JenkinsHash and added it to org.apache.hadoop.hive.ql.exec.vector.expressions.CuckooSetBytes and modified it slightly because the interface was not quite right for use CuckooSetBytes.

      I propose modifying org.apache.hadoop.util.hash.JenkinsHash to provide an additional interface function:

      public int hash(byte[] key, int start, int nbytes, int initval)

      This would return a hash value for the sequence of bytes beginning at start and ending at start + nbytes (exclusive).

      The existing interface function in org.apache.hadoop.util.hash.JenkinsHash

      public int hash(byte[] key, int nbytes, int initval)

      would then be modified to call this new function. The original hash() function does not take a start parameter, and always assumes the key in byte[] key starts at position 0. This will expand the use cases for the JenkinsHash package. At that point, the Hive CuckooSetBytes class can be modified so that it can reference the JenkinsHash package of Hadoop and use it directly, rather than using a copied and modified version of the code locally.

      Existing users of hash(byte[] key, int nbytes, int initval) will then have to pay an extra function call. If the performance ramifications of this worry anyone, please comment. Alternatives would be to copy the new version of hash() in entirety into JenkinsHash, or simply not do this JIRA.


          Issue Links



              • Assignee:
                ehans Eric N. Hanson
                ehans Eric N. Hanson
              • Votes:
                0 Vote for this issue
                2 Start watching this issue


                • Created: