Java程序使用sqoop导入数据

Java程序使用sqoop导入数据,java,hadoop,hdfs,sqoop,Java,Hadoop,Hdfs,Sqoop,我已经创建了一个web应用程序(JSP)来将数据从mysql数据库提取到HDFS。在我的Java代码中,我使用了sqoop import命令来实现我的需求。程序成功执行,但提取的数据将写入普通unix文件系统而不是hdfs 有人能告诉我如何在sqoop导入命令中提供hdfs文件系统路径吗 package com.archival.da; import java.sql.*; public class DataImportSetup { static int statu

我已经创建了一个web应用程序(JSP)来将数据从mysql数据库提取到HDFS。在我的Java代码中,我使用了sqoop import命令来实现我的需求。程序成功执行,但提取的数据将写入普通unix文件系统而不是hdfs

有人能告诉我如何在sqoop导入命令中提供hdfs文件系统路径吗

    package com.archival.da;
    import java.sql.*;

    public class DataImportSetup {

static int status=0;

public static int importsetup(String policy_id){


    Connection con=GetCon.getCon();
    PreparedStatement ps;
    try {
        ps = con.prepareStatement("SELECT  
                   CON.SERVER,CON.PORT,CON.DB,CON.USER,
                   CON.PWD,POLICY.SQL_TEXT FROM POLICY 
            JOIN CONNECTION AS CON ON POLICY.C_ID=CON.C_ID WHERE POLICY.ID=?");
        ps.setString(1,policy_id);
        ResultSet rs=ps.executeQuery();
        rs.next();
        String ServerNm =   
                    "jdbc:mysql://"+rs.getString(1)+":
                    "+rs.getString(2)+"/"
                    +rs.getString(3);
        String ConUser=rs.getString(4);
        String ConPass=rs.getString(5);
        String SqlText=rs.getString(6);

        String[] str={"import","--connect",ServerNm,"--hadoop-mapred- home","/ms/hadoop-1.2.0", "--query", SqlText , "--target-dir", "/user/root/city","--username", ConUser, "--password", ConPass,"--split-by","id"};
       status=Sqoop.runTool(str);
        System.out.println(status);

    } catch (SQLException e) {

        e.printStackTrace();
    }
    return status;

}

   }

它正在写入本地文件系统而不是HDFS,因为默认文件系统是本地的,除非另有配置。您可以使用SqoopOptions将其配置为HDFS-有关示例,请参阅此问题/答案:

具体而言,您需要定位并传递集群核心站点和hdfs站点xml文件的位置:

Configuration config = new Configuration(); 
config.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
config.addResource(new Path("/usr/local/hadoop/conf/hdfs-site.xml"));

你好,Chris,我使用了sqoop选项,在new ImportTool()上出现错误。
run(options)
;ImportTool类型中的run(SqoopOptions)方法不适用于参数(SqoopOptions)我的配置Hadoop 1.2.0 Sqoop 1.4.3您能在这个问题上提供帮助吗?检查
SqoopOptions
-ImportTool需要
com.cloudera.Sqoop.SqoopOptions
谢谢Chris,我已经从com.cloudear.sqoop.SqoopOptions导入了数据,它现在正在工作。我现在可以将数据加载到hdfs文件系统。我还有一个问题。我可以给出加载数据的目标文件名(不是目录)吗?我不确定-最好再发一个问题