java - 我正在尝试通过java编程将Sqoop从oracle导入到hdfs

标签 java oracle bash hadoop sqoop

我正在使用 ssh 执行 Sqoop 命令。这是我的代码的引用How to use Sqoop in Java Program?

但我收到错误“sqoop 命令未找到”。这是代码

package sqoop;

import net.neoremind.sshxcute.core.Result;
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{


    ConnBean cb = new ConnBean("172.17.13.47", "miracle","miracle");

    SSHExec ssh = SSHExec.getInstance(cb);          
    ssh.connect();
    CustomTask sampleTask2 = new ExecCommand("sqoop import --connect jdbc:oracle:thin:@172.17.13.47:1521/xe --username ouser --password oracleuser --table BRANCH --target-dir /user/branch -m 1");
    Result res = ssh.exec(sampleTask2);
    if (res.isSuccess)
    {
        System.out.println("Return code: " + res.rc);
        System.out.println("sysout: " + res.sysout);
    }
    else
    {
        System.out.println("Return code: " + res.rc);
        System.out.println("error message: " + res.error_msg);
    }
    
    ssh.disconnect();   
}
}

它显示的错误是:“执行命令时执行失败: 错误消息:bash:sqoop:找不到命令” 我也添加了 sshxcute jar 文件。

但是当我在终端上尝试 Sqoop 命令时,它运行得很好。 请让我知道如何实现这一目标。 谢谢。

最佳答案

您需要在 bash 配置文件中设置 sqoop home,或者传递完整的安装路径,例如/bin/sqoop。

以下是您需要在代码中添加的更改:

  CustomTask sampleTask2 = new ExecCommand("<installation_path>/bin/sqoop import --connect jdbc:oracle:thin:@172.17.13.47:1521/xe --username ouser --password oracleuser --table BRANCH --target-dir /user/branch -m 1"); 

关于java - 我正在尝试通过java编程将Sqoop从oracle导入到hdfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495152/

相关文章:

java - 使用 sql-maven-plugin 时 <outputFile> 属性无法正常工作

java - 将值从 jtable 行插入数据库 - IN OUT 错误

linux - 在 CentOS linux bash 脚本中回显写入文件时转义美元符号

bash - 检查未传递的参数时出现意外标记 `fi' 附近的语法错误

linux - 实例有限的 cron 作业

java - 正则表达式过滤联系人号码

java - SymmetricDS:我应该使用哪种方法来同步特定表?

java - 无法通过Spark 1.6从Parquet Hive表中读取数据

java - 垃圾收集中疏散和压缩之间的根本区别是什么?

ORACLE 使用 SSL 发送电子邮件