如何在Java程序中使用Sqoop?
我知道如何通过命令行使用sqoop。但是不知道如何使用Java程序调用sqoop命令。谁能提供一些代码视图?
回答:
您可以通过在类路径中包含sqoop jar并调用该Sqoop.runTool()
方法,从Java代码内部运行sqoop
。您将必须创建所需的参数才能以编程方式像命令行一样(例如,--connect
等)进行缩放。
请注意以下几点:
- 确保sqoop工具名称(例如,导入/导出等)是第一个参数。
- 请注意类路径的排序-执行可能会失败,因为sqoop需要库的版本X,而您使用的是其他版本。确保sqoop所需的库没有被您自己的依赖项所遮盖。我在commons-io中遇到了这样的问题(sqoop需要v1.4),并且由于我正在使用commons-io v1.2而出现了NoSuchMethod异常。
- 每个参数都必须位于单独的数组元素上。例如,“-connect jdbc:mysql:…”应作为数组中两个单独的元素而不是一个元素传递。
- sqoop解析器知道如何接受双引号参数,因此,如果需要,请使用双引号(我建议始终如此)。唯一的例外是fields-delimited-by参数,该参数需要一个字符,因此请不要双引号。
- 我建议拆分命令行参数创建逻辑和实际执行,以便无需实际运行工具即可正确测试您的逻辑。
- 最好使用–hadoop-home参数,以防止对环境的依赖性。
Sqoop.runTool()
与之相对的优点Sqoop.Main()
是runTool()
返回执行错误代码的事实。
希望能有所帮助。
final int ret = Sqoop.runTool(new String[] { ... });if (ret != 0) {
throw new RuntimeException("Sqoop failed - return code " + Integer.toString(ret));
}
RL
以上是 如何在Java程序中使用Sqoop? 的全部内容, 来源链接: utcz.com/qa/430098.html