Comment puis-je compiler une Ruche à l'UDF
Je suis en train de compiler ce 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;
}
}
Essayer de compiler avec:
javac Md5.java
Mais j'obtiens:
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;
Je suppose que ces sont dans un fichier jar quelque part, mais je ne suis pas sûr de l'endroit où hadoop les installer donc je ne peux pas les ajouter à mon classpath. Personne ne sait à l'emplacement par défaut ou comment les trouver?
J'en ai trouvé un
Eu:
/usr/lib/hadoop-0.20/hadoop-core.jar
par la conjecture qui fixe certains de l'erreur de compilation, mais une erreur pour org.apache.hadoop.hive.ql.exec.UDF
Eu:
/usr/lib/hive/lib/hive-exec-0.7.1-cdh3u3.jar
OriginalL'auteur nickponline | 2012-06-13
Vous devez vous connecter pour publier un commentaire.
La suivante fonctionne pour moi, mais je soupçonne que les détails varient en fonction de votre installation et de votre code source:
hadoop-common.jar
au lieu dehadoop-core.jar
OriginalL'auteur Peter Eisentraut
Avez-vous inclus des pots de la forme $HIVE_HOME/lib/ruche-serde-*.jar et $HIVE_HOME/lib/ruche-exec-*.jar dans le classpath?
OriginalL'auteur Girish Rao
ajouter de la ruche-0.4.1 fichier jar pour lib
OriginalL'auteur bhargav