public static ExprNodeGenericFuncDesc murmurHash(List<ExprNodeDesc> exps) {
    assert exps.size() >= 2;
    ExprNodeDesc hashExp = exps.get(0);
    for (int i = 1; i < exps.size(); i++) {
      List<ExprNodeDesc> hArgs = Arrays.asList(hashExp, exps.get(i));
      hashExp = new ExprNodeGenericFuncDesc(TypeInfoFactory.intTypeInfo, new GenericUDFMurmurHash(), "hash", hArgs);
    }
    return (ExprNodeGenericFuncDesc) hashExp;
  }
Create an expression for computing a murmur hash by recursively hashing given expressions by two:
<pre>
Input: HASH(A, B, C, D)
Output: HASH(HASH(HASH(A,B),C),D)
</pre>
ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java