当不是mapreduce作业时,如何设置用户类路径优先级



我的类看起来像这个

public class generateAll extends Configured implements Tool
{
public static void main(String[] args) throws Exception 
{
    ToolRunner.run(new generateAll(), args);
}
.
.
.

我想要的是,使用hadoop-jar命令执行程序,因为我在程序内部使用getConf()语句。

不涉及映射器还原器。

hadoop-libs中已经有一个hsqldb 1.8我的程序使用hsqlsb 2.2.9(作为maven依赖项)

jobConf中有一种方法可以用用户类路径覆盖hadoop类路径,但由于我的程序不涉及map/reduce,如何覆盖hadoopclasspath?

程序作为测试文件运行时运行良好。hadoop版本-cdh3u3

使用hadoop-jar命令时抛出的错误为:

线程"main"java.sql.SQLException中的异常:意外的令牌AS,需要(在语句[create table click AS]中)位于org.hsqldb.jdbc.Util.sqlException(未知源)网址:org.hsqldb.jdbc.jdbcStatement.fetchResult(未知来源)网址:org.hsqldb.jdbc.jdbcStatement.execute(未知来源)网址:com.inmobi.qa.SQLUtil.SQLScriptExecuter.executeScript(SQLScriptExecuter.java:62)网址:com.inmobi.qa.logboxtools.generateAll.test_table_creation(generateAll.java:186)网址:com.inmobi.qa.logboxtools.generateAll.run(generateAll.java:104)网址:org.apache.hoop.util.ToolRunner.run(ToolRunner.java:70)网址:org.apache.hoop.util.ToolRunner.run(ToolRunner.java:84)网址:com.inmobi.qa.logboxtools.generateAll.main(generateAll.java:55)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)位于java.lang.reflect.Method.ioke(Method.java:597)网址:org.apache.hadop.util.RunJar.main(RunJar.java:208)

在运行hadoop jar之前,请使用以下命令。

export HADOOP_USER_CLASSPATH_FIRST=true
export HADOOP_CLASSPATH=your_classpath:$HADOOP_CLASSPATH

你的classpath应该包含hsqlsb 2.2.9。

最新更新