我创建了一个新的Java项目,然后我添加了Sqoop和Hadoop库(这些库包括"hadoop-core-1.1.1.jar"、"sqoop-1.4.2.jar"等)。
接下来我尝试了以下代码:
接下来我尝试了以下代码:
public class MySqoopDriver {
public static void main(String[] args) {
String[] str = { "export", "--connect", "jdbc:mysql://localhost/mytestdb", "--hadoop-home",
"/home/yoonhok/development/hadoop-1.1.1", "--table", "tbl_1", "--export-dir", "hdfs://localhost:9000/user/hive/warehouse/tbl_1",
"--username", "yoonhok", "--password", "1234"};
Sqoop.runTool(str);
}
}
参数是正确的,因为在终端中尝试时它可以正常工作。
但是它没有起作用。错误消息是:
13/02/17 16:23:07 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
13/02/17 16:23:07 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
13/02/17 16:23:07 INFO tool.CodeGenTool: Beginning code generation
13/02/17 16:23:07 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `tbl_1` AS t LIMIT 1
13/02/17 16:23:07 INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM `tbl_1` AS t LIMIT 1
13/02/17 16:23:07 INFO orm.CompilationManager: HADOOP_HOME is /home/yoonhok/development/hadoop-1.1.1
Note: /tmp/sqoop-yoonhok/compile/86a3cab62184ad50a3ae11e7cb0e4f4d/tbl_1.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
13/02/17 16:23:08 INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-yoonhok/compile/86a3cab62184ad50a3ae11e7cb0e4f4d/tbl_1.jar
13/02/17 16:23:08 INFO mapreduce.ExportJobBase: Beginning export of tbl_1
13/02/17 16:23:09 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
13/02/17 16:23:09 INFO input.FileInputFormat: Total input paths to process : 1
13/02/17 16:23:09 INFO input.FileInputFormat: Total input paths to process : 1
13/02/17 16:23:09 INFO mapred.JobClient: Cleaning up the staging area file:/tmp/hadoop-yoonhok/mapred/staging/yoonhok1526809600/.staging/job_local_0001
13/02/17 16:23:09 ERROR security.UserGroupInformation: PriviledgedActionException as:yoonhok cause:java.io.FileNotFoundException: File /user/hive/warehouse/tbl_1/000000_0 does not exist.
13/02/17 16:23:09 ERROR tool.ExportTool: Encountered IOException running export job: java.io.FileNotFoundException: File /user/hive/warehouse/tbl_1/000000_0 does not exist.
当我检查HDFS时,文件已经存在:
hadoop fs -ls /user/hive/warehouse/tbl_1
Found 1 items
-rw-r--r-- 1 yoonhok supergroup 240 2013-02-16 18:56 /user/hive/warehouse/tbl_1/000000_0
我如何在我的Java程序中执行Sqoop?
我尝试了Processbuilder和Process,但我不想使用它们。
我真的想使用Sqoop API,但我听说它还不存在。
我阅读了这个问题,但对我没有用。