作者:邻居小明 | 来源:互联网 | 2023-05-16 07:10
在任何答案和评论之前.我尝试了在Stackoverflow中找到的几个选项,但均以失败告终.以下是这些链接-HowcanIexecuteSqoopinJava?Howtouse
在任何答案和评论之前.我尝试了在Stackoverflow中找到的几个选项,但均以失败告终.以下是这些链接-
> How can I execute Sqoop in Java?
> How to use Sqoop in Java Program?
> How to import table from MySQL to Hive using Java?
> How to load SQL data into the Hortonworks?
我通过命令行在Horton Sandbox中进行了尝试并成功.
sqoop import --connect jdbc:mysql://192.168.56.101:3316/database_name --username=user --password=pwd --table table_name --hive-import -m 1 -- --schema default
其中192.168.56.101适用于Windows,而192.168.56.102适用于Horton Sandbox 2.6.
现在,我想在Java中做同样的事情,使Java代码在其他地方运行,但不在Horton沙箱中运行.
>如何定位HIVE_HOME和其他Sqoop参数,因为它们正在沙盒中运行.
>我必须通过的参数.它应该作为SqoopOptions或Sqoop.runTools字符串数组参数传递.都失败了.
>当导入库(com.cloudera.sqoop和org.apache.sqoop)时,我也感到困惑,并得到这个
ImportTool类型的方法run(com.cloudera.sqoop.SqoopOptions)不适用于这些参数
(org.apache.sqoop.SqoopOptions)包含这两行(在这两行之间添加了option参数)
SqoopOptions optiOns= new SqoopOptions();
int ret = new ImportTool().run(options);
如果我选择Cloudera方法,则弃用,但如果我选择apace run方法,则不接受options参数
我从几周后就为此感到震惊.请帮忙.
解决方法:
是的,您可以通过ssh进行操作. Horton Sandbox预先安装了ssh支持.您可以在Windows上通过ssh客户端执行sqoop命令.或者,如果您想以编程方式(即我在Java中所做的)进行此操作,则必须执行此步骤.
>下载sshxcute Java库:https://code.google.com/p/sshxcute/
>添加到您的Java项目的构建路径,其中包含以下Java代码
import net.neoremind.sshxcute.core.SSHExec;
import net.neoremind.sshxcute.core.ConnBean;
import net.neoremind.sshxcute.task.CustomTask;
import net.neoremind.sshxcute.task.impl.ExecCommand;
public class TestSSH {
public static void main(String args[]) throws Exception{
// Initialize a ConnBean object, parameter list is ip, username, password
ConnBean cb = new ConnBean("192.168.56.102", "root","hadoop");
// Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
SSHExec ssh = SSHExec.getInstance(cb);
// Connect to server
ssh.connect();
CustomTask sampleTask1 = new ExecCommand("echo $SSH_CLIENT"); // Print Your Client IP By which you connected to ssh server on Horton Sandbox
System.out.println(ssh.exec(sampleTask1));
CustomTask sampleTask2 = new ExecCommand("sqoop import --connect jdbc:mysql://192.168.56.101:3316/mysql_db_name --username=mysql_user --password=mysql_pwd --table mysql_table_name --hive-import -m 1 -- --schema default");
ssh.exec(sampleTask2);
ssh.disconnect();
}
}