5

私はこの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;
    }
}

コンパイルしようとしています:

javac Md5.java

しかし、私は得ます:

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;

これらはどこかのjarファイルにあると思いますが、hadoopがどこにインストールされているかわからないため、クラスパスに追加できません。誰かがデフォルトの場所や見つける方法を知っていますか?

4

3 に答える 3

3

以下は私にとってはうまくいきますが、詳細はインストールとソースコードの機能によって異なると思われます。

export CLASSPATH=/usr/lib/hive/lib/hive-exec-0.9.0.15.jar:/usr/lib/hadoop/hadoop-core.jar
于 2012-12-05T20:54:48.273 に答える
0

hive-0.4.1 jar ファイルを lib に追加します

于 2013-02-13T07:59:14.200 に答える
0

クラスパスに $HIVE_HOME/lib/hive-serde-*.jar および $HIVE_HOME/lib/hive-exec-*.jar の形式の jar を含めましたか?

于 2012-06-13T17:01:15.853 に答える