Tôi cố gắng để biên dịch UDF này:Làm thế nào để biên dịch một UDF Hive
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;
}
}
Đang cố gắng để biên dịch với:
javac Md5.java
Nhưng tôi nhận được:
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;
tôi giả đây là trong một tập tin jar ở đâu đó nhưng tôi không chắc nơi hadoop cài đặt chúng để tôi không thể thêm chúng vào classpath của tôi. Có ai biết vị trí mặc định hoặc cách tìm hiểu không?
tôi thấy một '/ usr/lib/hadoop-0.20/hadoop-core.jar' bằng cách phỏng đoán đã sửa một số lỗi biên dịch, nhưng vẫn gặp lỗi cho' org.apache.hadoop.hive.ql.exec.UDF' – nickponline
GOt nó: '/ usr/lib/hive/lib/hive-exec-0.7.1-cdh3u3.jar' – nickponline