如何编译Hive UDF
我正在尝试编译这个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在哪里安装它们所以我不能将它们添加到我的类路径中。 有谁知道默认位置或如何找出?
以下对我有用,但我怀疑细节会因您的安装和源代码的作用而有所不同:
export CLASSPATH=/usr/lib/hive/lib/hive-exec-0.9.0.15.jar:/usr/lib/hadoop/hadoop-core.jar
你有没有在你的类路径中包含$ HIVE_HOME / lib / hive-serde – * .jar和$ HIVE_HOME / lib / hive-exec – * .jarforms的jar子?
将hive-0.4.1 jar文件添加到lib
- 如何在执行java.io.File或FileInputStream时引用OSGi包中的包含文件
- Mac上的CLASSPATH,以及Mac如何寻找mysql-connector-java-bin.jar
- 从命令行运行Mahout(CLASSPATH)
- Java配置构建路径或WEB-INF / lib文件夹
- Mac用户 – 如何在Mac中设置CLASSPATHS(我正在进行Lucene演示)
- 使用Eclipse在Manifest文件中构建ClassPath变量
- 在cygwin中将多个jar文件设置为classpath
- 让Rhino JS看Java类
- 如何将本地文件名传递给ClassPathXmlApplicationContext?