ich diese UDF zu kompilieren versuchen:Wie kompiliere ich eine Hive UDF
package com.dataminelab.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.security.*;
/**
* Calculate md5 of the string
*/
public final class Md5 extends UDF {
public Text evaluate(final Text s) {
if (s == null) {
return null;
}
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(s.toString().getBytes());
byte[] md5hash = md.digest();
StringBuilder builder = new StringBuilder();
for (byte b : md5hash) {
builder.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
}
return new Text(builder.toString());
} catch (NoSuchAlgorithmException nsae) {
System.out.println("Cannot find digest algorithm");
System.exit(1);
}
return null;
}
}
Den Versuch, mit kompilieren:
javac Md5.java
Aber ich bekomme:
Md5.java:2: package org.apache.hadoop.hive.ql.exec does not exist
import org.apache.hadoop.hive.ql.exec.UDF;
^
Md5.java:3: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;
Ich gehe davon aus Diese sind irgendwo in einer JAR-Datei, aber ich bin mir nicht sicher, wo Hadoop sie installieren soll, damit ich sie nicht zu meinem Klassenpfad hinzufügen kann. Kennt jemand den Standardstandort oder wie findet man es heraus?
ich lib ein '/ usr/lib/hadoop-0.20/hadoop-core.jar' durch Ratespiel, das einen Teil des Kompilierungsfehlers behob, aber immer noch einen Fehler für' org.apache.hadoop.hive.ql.exec.UDF' – nickponline
GOt es: '/ usr/lib/hive/lib/hive-exec-0.7.1-cdh3u3.jar' – nickponline