java—sqoopoptions类有其他选择吗

1yjd4xko  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(284)

我正在尝试使用java代码将数据从mysql导入hive SqoopOptions 班级,但上面写着这个班级( com.cloudera.sqoop.SqoopOptions )已弃用,类sqoopoptions。我谷歌出这个替代品,但没有找到任何东西,有人能告诉我什么是替代品做这件事。我想通过java程序使用sqoop命令。

byqmnocz

byqmnocz1#

当sqoop进入apache时 com.cloudera.sqoop.* 代码已重命名/迁移到 org.apache.sqoop.* . 你要找的班级是 org.apache.sqoop.SqoopOptions 我相信。
我强烈建议不要从java程序中使用sqoop。相反,试试sqoop2。我相信你可以导入到hdfs使用风筝连接器在avro或Parquet格式。然后您应该能够将数据加载到配置单元中。

uxh89sit

uxh89sit2#

一个选项是可以使用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();
    }
}

相关问题