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

时间:2013-08-22 16:59:17

标签: hadoop

我的班级看起来像这样

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

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

没有涉及mapper reducer。

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

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

作为测试文件运行时,程序运行正常。 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.hadoop.util.ToolRunner.run(ToolRunner.java:70)     在org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)     在com.inmobi.qa.logboxtools.generateAll.main(generateAll.java:55)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)     在java.lang.reflect.Method.invoke(Method.java:597)     在org.apache.hadoop.util.RunJar.main(RunJar.java:208)

1 个答案:

答案 0 :(得分:0)

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

export HADOOP_USER_CLASSPATH_FIRST=true
export HADOOP_CLASSPATH=your_classpath:$HADOOP_CLASSPATH

your_classpath应包含hsqlsb 2.2.9。