我的班级看起来像这样
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)
答案 0 :(得分:0)
在运行hadoop jar
之前使用以下命令。
export HADOOP_USER_CLASSPATH_FIRST=true
export HADOOP_CLASSPATH=your_classpath:$HADOOP_CLASSPATH
your_classpath应包含hsqlsb 2.2.9。