Java SqoopOptions类有其他选择吗
我试图使用Java SqoopOptions类有其他选择吗,java,hadoop,hdfs,sqoop,cloudera-cdh,Java,Hadoop,Hdfs,Sqoop,Cloudera Cdh,我试图使用SqoopOptions类使用Java代码将数据从MySQL导入到Hive,但它说这个类(com.cloudera.sqoop.SqoopOptions)不推荐使用。我用谷歌搜索出了这个替代方案,但没有找到任何东西,有人能告诉我做这个的替代方案是什么吗。我想通过java程序使用sqoop命令。一个选项是,您可以使用 以下是您可以使用的代码段 import net.neoremind.sshxcute.core.ConnBean; import net.neoremind.sshxcut
SqoopOptions
类使用Java代码将数据从MySQL导入到Hive,但它说这个类(com.cloudera.sqoop.SqoopOptions
)不推荐使用。我用谷歌搜索出了这个替代方案,但没有找到任何东西,有人能告诉我做这个的替代方案是什么吗。我想通过java程序使用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();
}
}
import net.neoEmilding.sshxcute.core.ConnBean;
导入net.neoEmilding.sshxcute.core.Result;
导入net.neoEmilding.sshxcute.core.SSHExec;
导入net.neoEmilding.sshxcute.task.CustomTask;
导入net.neoEmilding.sshxcute.task.impl.ExecCommand;
公共静态void main(字符串[]args){
ConnBean=newconnbean(“,”,“);
SSHExec-SSHExec=SSHExec.getInstance(connBean);
StringBuilder sqoopImportCommand=新的StringBuilder(“sqoop导入--连接jdbc:mysql://:/”)
.append(“--username--password--table--target dir”);
试一试{
sshExec.connect();
CustomTask sqoopImportTask=new ExecCommand(sqoopImportCommand.toString());
结果crres=sshExec.exec(sqoopmenttask);
if(crres.isSuccess){
System.out.println(“数据导入成功”);
}
}捕获(例外e){
//TODO:处理异常
e、 printStackTrace();
}最后{
sshExec.disconnect();
}
}
当Sqoop进入Apache时,许多com.cloudera.Sqoop.
代码已重命名/迁移到org.Apache.Sqoop.
。我相信您正在寻找的类是org.apache.sqoop.SqoopOptions
我强烈建议不要从Java程序中使用Sqoop。相反,请尝试Sqoop2。我相信你可以导入到HDFS使用风筝连接器在Avro或拼花格式。然后您应该能够将该数据加载到配置单元中。如果另一个系统是我们没有公钥的任何机器,那么是否可以使用sshxcute进行连接。我怀疑它是否适用于远程计算机?根据sshxcute文档,如果您的远程系统已打开SSH连接并启用凭据,则您可以使用sshxcute连接到远程系统是的,没错,但在我的场景中,我正在使用基于web的数据迁移工具,该工具可以从任何位置访问。因此,不可能从每个系统获取凭证。那么我应该使用什么呢?这里您需要运行导入作业的系统的凭据,而不是运行应用程序的用户系统的凭据。在这种情况下,您需要安装了hadoop和sqoop的远程系统的凭据,该系统将运行sqoop导入作业并将数据推送到HDFSHere ConnBean指的是您的远程系统,您在其中安装了hadoop和sqoop,在该系统上,当您连接并执行我正在查找的任务时,它将运行sqoop导入作业
org.apache.sqoop.SqoopOptions
,感谢您的回复。我有了新的想法,这将对我有很大帮助com.cloudera.sqoop.SqoopOptions
似乎已经“过早地被弃用”,因为sqoop的一些功能(例如EvalSqlTool等工具类)仍然需要它,并且不能与org.apache.sqoop.SqoopOptions
一起使用。哎呀,谢谢Sqoop强迫我每次编译时都看到弃用警告。