我创建了一个web应用程序(jsp)来将mysql数据库中的数据提取到hdfs中。程序执行成功,但提取的数据被写入普通unix文件系统而不是hdfs。
有人能告诉我如何在sqoop import命令中提供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;
}
}
1条答案
按热度按时间z9zf31ra1#
它正在写入本地文件系统而不是hdfs,因为除非另有配置,否则默认文件系统是本地的。您可以使用sqoopoptions将其配置为hdfs—有关示例,请参阅以下问题/答案:
如何在java中执行sqoop?
具体来说,您需要定位并传递集群核心站点和hdfs站点xml文件的位置: