我正在尝试使用SqoopOptions
类使用Java代码将数据从 MySQL 导入 Hive ,但是它说这个类(com.cloudera.sqoop.SqoopOptions
)已弃用,Class SqoopOptions。我谷歌替代这个但没有找到任何东西,任何人都可以建议我做什么是替代方案。我想通过我的java程序使用sqoop命令。
答案 0 :(得分:2)
当Sqoop进入Apache时,很多com.cloudera.sqoop.*
代码已重命名/迁移到org.apache.sqoop.*
。你要找的班级是org.apache.sqoop.SqoopOptions
我相信。
我强烈建议不要在Java程序中使用Sqoop。相反,尝试 Sqoop2 。我相信您可以使用Avro或Parquet格式的Kite连接器导入HDFS。然后你应该能够将这些数据加载到Hive中。
答案 1 :(得分:1)
一个选项是您可以使用sshxcute
执行sqoop导入命令以下是您可以使用的代码段
import net.neoremind.sshxcute.core.ConnBean;
import net.neoremind.sshxcute.core.Result;
import net.neoremind.sshxcute.core.SSHExec;
import net.neoremind.sshxcute.task.CustomTask;
import net.neoremind.sshxcute.task.impl.ExecCommand;
public static void main(String[] args) {
ConnBean connBean = new ConnBean("<SYSTEM_IP>", "<USERNAME>","<PASSWORD>");
SSHExec sshExec = SSHExec.getInstance(connBean);
StringBuilder sqoopImportCommand = new StringBuilder("sqoop import --connect jdbc:mysql://<IP_ADDRESS>:<PORT>/<DATABASE> ")
.append("--username <USERNAME> --password <PASSWORD> --table <TABLE_NAME> --target-dir <HDFS_PATH>");
try {
sshExec.connect();
CustomTask sqoopImportTask = new ExecCommand(sqoopImportCommand.toString());
Result crres = sshExec.exec(sqoopImportTask);
if(crres.isSuccess){
System.out.println("Data imported successfully");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
sshExec.disconnect();
}
}