我的类看起来像这个
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。