当前位置: 首页 > 面试题库 >

如何在Java程序中使用Sqoop?

梁丘高朗
2023-03-14
问题内容

我知道如何通过命令行使用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



 类似资料:
  • 问题内容: 我已经从http://code.google.com/p/facebook-java- api/ 下载了facebook-java- api-3.0.2-bin 以连接到脸书。我想在我的Java应用程序中使用此api连接Facebook。我正在为此目的开发桌面应用程序。我已经在Face book上创建了帐户并注册为开发人员。 是否可以从我的Java应用程序连接Facebook? 如果是

  • 我不知道如何用GraalVM的SDK编译我的Java应用程序。我相信在使用GraalVMbinary时,默认情况下会将它们添加到类路径中。 我的hello world测试应用程序: 输出: 我使用的是用OpenJDK 11构建的GraalVM二进制文件: 当深入挖掘时,我发现这些类包含在其中。jmod档案位于:

  • 最近,我通过学习CodeLabs教程学习了kotlin coroutine。经过一些实践,我想知道我是否可以用java编写相同的代码。首先,我在MyKotlinFragment中编写了一个简单的kotlin代码。kt文件如下: 在我的片段中调用了;它起作用了。 接下来,我打开了一个名为MyRoutineFragment的java文件。java在同一个项目中,但我无法让它工作。 我无法将第一个文件转

  • 我用于处理和文件的一般java代码是: 我必须处理3.0版本的才能使用以下函数: parse-xml-fragment() 预期产出: 谁能提供一个解决方案吗?

  • 我想用java中的参数调用python程序。但我的输出是空白的。代码在这里。 Python代码如下: java代码在这里: 我想输出30,有人能告诉我哪里出错了吗?

  • 问题内容: 使用上面的上述Java代码,正在从名为feedsCA的表中检索行数。 尝试使用rs.getInt(1),rs.getInt(2),rs.getInt(3)检索计数时,我以如下错误结束, 更新: 上述异常已解决。 但是我得到以下异常,我不知道原因。请指教。 这就是我更新程序的方式。为我找到一种合理的方式,因为我可以很好地理解下面的循环无法按要求工作。 问题答案: 您必须将结果集的光标移动