如何使用 java 执行现有的 sqoop 作业?

Posted

技术标签:

【中文标题】如何使用 java 执行现有的 sqoop 作业?【英文标题】:How can I execute existing sqoop job using java? 【发布时间】:2017-09-04 07:07:34 【问题描述】:

我在这里使用 Java 进行增量导入。但我不知道如何使用已经存在的工作。

我是说

sqoop job --create moviesJob1 -- import --connect jdbc:mysql://localhost/mydb --username root -P --table movies --m 1 --target-dir /movies --incremental append --check-column movieId --last-val 0



 SqoopOptions options  = new SqoopOptions();
            options.setJobName(tableDTO.getTableName()+"Job");
            options.setDriverClassName(driver);
            options.setHadoopHome(HADOOP_HOME);
            options.setConnectString(MYSQL_CONNECTION_STRING);
            options.setUsername(USERNAME);
            options.setPassword(PASSWORD);
            options.setTableName(tableDTO.getTableName());
            options.setNumMappers(Integer.parseInt(tableDTO.getNoOfMappers()));
            options.setTargetDir(HDFS_DIRECTORY_PATH+"/"+tableDTO.getTableName());
            options.setFieldsTerminatedBy('|');
            options.setAppendMode(true);
            options.setIncrementalMode(IncrementalMode.AppendRows);
            options.setIncrementalLastValue("0");

我为此编写了代码, 现在我必须执行:

sqoop job --exec moviesJob1

要执行这个:

 options.getJobName(); // getting JobName but not finding method to run job

谁能给点建议? 提前致谢。

【问题讨论】:

【参考方案1】:

试试这样的:

new ExportTool().run(options);

或:

new com.cloudera.sqoop.tool.ImportTool().run(options);

【讨论】:

以上是关于如何使用 java 执行现有的 sqoop 作业?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 sqoop 作业设置 vcore

Oozie - 运行 sqoop 时出现异常:无法加载数据库驱动程序类:com.mysql.jdbc.Driver

Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException

Oozie Sqoop 作业 - 无法恢复作业

Dataproc 上的 Sqoop 无法将数据导出为 Avro 格式

sqoop 作业 shell 脚本在 oozie 中并行执行