You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by sp...@apache.org on 2015/05/20 18:01:43 UTC

[24/50] [abbrv] hive git commit: HIVE-10657 Remove copyBytes operation from MD5 UDF (Alexander Pivovarov, reviewed by Jason Dere)

HIVE-10657 Remove copyBytes operation from MD5 UDF (Alexander Pivovarov, reviewed by Jason Dere)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/bf7810ab
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/bf7810ab
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/bf7810ab

Branch: refs/heads/parquet
Commit: bf7810ab64caabc47d4370d04f80c0c1f182426a
Parents: ad62e2e
Author: Alexander Pivovarov <ap...@gmail.com>
Authored: Fri May 8 11:36:47 2015 -0700
Committer: Alexander Pivovarov <ap...@gmail.com>
Committed: Fri May 15 10:20:32 2015 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/ql/udf/UDFMd5.java   | 33 +++++++++++++-------
 1 file changed, 21 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/bf7810ab/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMd5.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMd5.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMd5.java
index 62c16c2..14928ef 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMd5.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMd5.java
@@ -18,7 +18,10 @@
 
 package org.apache.hadoop.hive.ql.udf;
 
-import org.apache.commons.codec.digest.DigestUtils;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import org.apache.commons.codec.binary.Hex;
 import org.apache.hadoop.hive.ql.exec.Description;
 import org.apache.hadoop.hive.ql.exec.UDF;
 import org.apache.hadoop.io.BytesWritable;
@@ -39,6 +42,15 @@ import org.apache.hadoop.io.Text;
 public class UDFMd5 extends UDF {
 
   private final Text result = new Text();
+  private final MessageDigest digest;
+
+  public UDFMd5() {
+    try {
+      digest = MessageDigest.getInstance("MD5");
+    } catch (NoSuchAlgorithmException e) {
+      throw new RuntimeException(e);
+    }
+  }
 
   /**
    * Convert String to md5
@@ -48,8 +60,10 @@ public class UDFMd5 extends UDF {
       return null;
     }
 
-    String str = n.toString();
-    String md5Hex = DigestUtils.md5Hex(str);
+    digest.reset();
+    digest.update(n.getBytes(), 0, n.getLength());
+    byte[] md5Bytes = digest.digest();
+    String md5Hex = Hex.encodeHexString(md5Bytes);
 
     result.set(md5Hex);
     return result;
@@ -63,17 +77,12 @@ public class UDFMd5 extends UDF {
       return null;
     }
 
-    byte[] bytes = copyBytes(b);
-    String md5Hex = DigestUtils.md5Hex(bytes);
+    digest.reset();
+    digest.update(b.getBytes(), 0, b.getLength());
+    byte[] md5Bytes = digest.digest();
+    String md5Hex = Hex.encodeHexString(md5Bytes);
 
     result.set(md5Hex);
     return result;
   }
-
-  protected byte[] copyBytes(BytesWritable b) {
-    int size = b.getLength();
-    byte[] result = new byte[size];
-    System.arraycopy(b.getBytes(), 0, result, 0, size);
-    return result;
-  }
 }