[HADOOP] 어떻게 자바를 사용하여 하이브 MySQL에서 테이블을 가져?
HADOOP어떻게 자바를 사용하여 하이브 MySQL에서 테이블을 가져?
나는 하이브 MySQL에서 테이블을 가져 오기 위해 노력하고 있어요. 그러나, 나는이에 대한 솔루션을 제공하시기 바랍니다 수 있습니다, 다음과 같은 오류는 무엇입니까?
내가 작성한 코드 :
public class SqoopJavaInterface {
private static final String JOB_NAME = "Sqoop Hive Job";
private static final String MAPREDUCE_JOB = "Hive Map Reduce Job";
private static final String DBURL = "jdbc:mysql://localhost:3306/test";
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
private static final String HADOOP_HOME = "/home/master/apps/hadoop-1.0.4";
private static final String JAR_OUTPUT_DIR = "/home/master/data";
private static final String HIVE_HOME = "/home/master/apps/hive-0.10.0";
private static final String HIVE_DIR = "/user/hive/warehouse/";
private static final String WAREHOUSE_DIR = "hdfs://localhost:9000/user/hive/warehouse/student";
private static final String SUCCESS = "SUCCESS !!!";
private static final String FAIL = "FAIL !!!";
/**
* @param table
* @throws IOException
*/
public static void importToHive(String table) throws IOException {
System.out.println("SqoopOptions loading .....");
Configuration config = new Configuration();
// Hive connection parameters
config.addResource(new Path(HADOOP_HOME+"/conf/core-site.xml"));
config.addResource(new Path(HADOOP_HOME+"/conf/hdfs-site.xml"));
config.addResource(new Path(HIVE_HOME+"/conf/hive-site.xml"));
FileSystem dfs =FileSystem.get(config);
/* MySQL connection parameters */
SqoopOptions options = new SqoopOptions(config);
options.setConnectString(DBURL);
options.setTableName(table);
options.setDriverClassName(DRIVER);
options.setUsername(USERNAME);
options.setPassword(PASSWORD);
options.setHadoopMapRedHome(HADOOP_HOME);
options.setHiveHome(HIVE_HOME);
options.setHiveImport(true);
options.setHiveTableName(table);
options.setOverwriteHiveTable(true);
options.setFailIfHiveTableExists(false);
options.setFieldsTerminatedBy(',');
options.setOverwriteHiveTable(true);
options.setDirectMode(true);
options.setNumMappers(1); // No. of Mappers to be launched for the job
options.setWarehouseDir(WAREHOUSE_DIR);
options.setJobName(JOB_NAME);
options.setMapreduceJobName(MAPREDUCE_JOB);
options.setTableName(table);
options.setJarOutputDir(JAR_OUTPUT_DIR);
System.out.println("Import Tool running ....");
ImportTool it = new ImportTool();
int retVal = it.run(options);
if (retVal == 0) {
System.out.println(SUCCESS);
} else {
System.out.println(FAIL);
}
}
나는 위의 코드를 실행하면, 나는 다음과 같은 오류를 얻고있다. u는 이에 대한 솔루션을 제공시겠습니까?
Execution failed while executing command: 192.168.10.172
Error message: bash: 192.168.10.172: command not found
Now wait 5 seconds to begin next task ...
Connection channel disconnect
net.neoremind.sshxcute.core.Result@60c2be20
Command is sqoop import --connect jdbc:mysql://localhost:3316/hadoop --username root --password root --table employees --hive-import -m 1 -- --schema default
Connection channel established succesfully
Start to run command
Connection channel closed
Check if exec success or not ...
Execution failed while executing command: sqoop import --connect jdbc:mysql://localhost:3316/hadoop --username root --password root --table employees --hive-import -m 1 -- --schema default
Error message: bash: sqoop: command not found
Now wait 5 seconds to begin next task ...
Connection channel disconnect
SSH connection shutdown
해결법
-
==============================
1.Sqoop을 옵션 방법이되지 않습니다, 당신은 코드를 사용할 수 있습니다 :
Sqoop을 옵션 방법이되지 않습니다, 당신은 코드를 사용할 수 있습니다 :
public static void importToHive() throws Exception{ 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")); String[] cmd ={"import", "--connect",<connectionString>,"--username", userName, "--password", password,"--hadoop-home", "/usr/local/hadoop","--table",<tableName>, "--hive-import","--create-hive-table", "--hive-table",<tableName>,"-target-dir", "hdfs://localhost:54310/user/hive/warehouse","-m", "1","--delete-target-dir"}; Sqoop.runTool(cmd,config); }
MySQL을위한 적절한 하둡과 하이브 창고 경로, 사용자 이름, 암호를 사용하십시오. 코어를 site.xml에서 포트를 확인하십시오 (내 경우는 54310입니다)
from https://stackoverflow.com/questions/22487688/how-to-import-table-from-mysql-to-hive-using-java by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 자바를 통해 하둡 클러스터의 모든 원사 응용 프로그램을 나열 (0) | 2019.09.20 |
---|---|
[HADOOP] HDP 2.5 : 스파크 역사 서버 UI가 완료되지 않은 응용 프로그램을 표시하지 않습니다 (0) | 2019.09.20 |
[HADOOP] 펜타 하둡 파일 입력 (0) | 2019.09.20 |
[HADOOP] HIVE_STATS_JDBC_TIMEOUT 및 방법에 대한 모든 업데이트는 소스 레벨에서를 건너 뛰려면 (0) | 2019.09.20 |
[HADOOP] 윈도우에서 HBase를 연결할 수 없습니다 (0) | 2019.09.20 |