如何在Java程序中使用Sqoop? [英] How to use Sqoop in Java Program?
问题描述
我知道如何通过命令行使用sqoop。
但是不知道如何使用java程序调用sqoop命令。
任何人都可以提供一些代码视图吗?
您可以从java代码中运行sqoop,方法是将sqoop jar在你的classpath中调用 Sqoop.runTool()
方法。您必须以编程方式创建所需的参数给sqoop,就好像它是命令行一样(例如 - connect
等)。
请注意以下几点:
Sqoop.Main()$相对,
Sqoop.runTool()
c $ c>是这样一个事实: runTool()
返回执行的错误代码。
希望有帮助。
final int ret = Sqoop.runTool(new String [] {...} );
if(ret!= 0){
throw new RuntimeException(Sqoop failed - return code+ Integer.toString(ret));
}
RL
I know how to use sqoop through command line. But dont know how to call sqoop command using java programs . Can anyone give some code view?
You can run sqoop from inside your java code by including the sqoop jar in your classpath and calling the Sqoop.runTool()
method. You would have to create the required parameters to sqoop programmatically as if it were the command line (e.g. --connect
etc.).
Please pay attention to the following:
- Make sure that the sqoop tool name (e.g. import/export etc.) is the first parameter.
- Pay attention to classpath ordering - The execution might fail because sqoop requires version X of a library and you use a different version. Ensure that the libraries that sqoop requires are not overshadowed by your own dependencies. I've encountered such a problem with commons-io (sqoop requires v1.4) and had a NoSuchMethod exception since I was using commons-io v1.2.
- Each argument needs to be on a separate array element. For example, "--connect jdbc:mysql:..." should be passed as two separate elements in the array, not one.
- The sqoop parser knows how to accept double-quoted parameters, so use double quotes if you need to (I suggest always). The only exception is the fields-delimited-by parameter which expects a single char, so don't double-quote it.
- I'd suggest splitting the command-line-arguments creation logic and the actual execution so your logic can be tested properly without actually running the tool.
- It would be better to use the --hadoop-home parameter, in order to prevent dependency on the environment.
- The advantage of
Sqoop.runTool()
as opposed toSqoop.Main()
is the fact thatrunTool()
return the error code of the execution.
Hope that helps.
final int ret = Sqoop.runTool(new String[] { ... });
if (ret != 0) {
throw new RuntimeException("Sqoop failed - return code " + Integer.toString(ret));
}
RL
这篇关于如何在Java程序中使用Sqoop?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!