2012-06-13 34 views
5

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?

+0

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

+1

GOt nó: '/ usr/lib/hive/lib/hive-exec-0.7.1-cdh3u3.jar' – nickponline

Trả lời

0

Bạn đã bao gồm các lọ có dạng $ HIVE_HOME/lib/hive-serde - *. Jar và $ HIVE_HOME/lib/hive-exec - *. Jar trong đường dẫn lớp của bạn?

2

Các công trình sau đây đối với tôi, nhưng tôi nghi ngờ các chi tiết sẽ thay đổi tùy thuộc vào cài đặt của bạn và những gì mã nguồn của bạn không:

export CLASSPATH=/usr/lib/hive/lib/hive-exec-0.9.0.15.jar:/usr/lib/hadoop/hadoop-core.jar 
0

thêm hive-0.4.1 file jar để lib

Các vấn đề liên quan