【发布时间】:2014-10-27 00:38:48
【问题描述】:
我正在尝试从 Java 代码执行 hadoop fs -put <source> <destination>。当我直接从终端执行此命令时,它可以正常工作,但是当我尝试使用
String[] str = {"/usr/bin/hadoop","fs -put", source, dest};
Runtime.getRuntime().exec(str);
我收到Error: Could not find or load main class fs 的错误。我尝试从 Java 执行一些非 hadoop 命令,例如 ls、mkdir 命令,它们运行良好,但 hadoop 命令没有得到执行,即使它们在终端上运行良好。
这可能是什么原因,我该如何解决?
JAVA API TRY: 我尝试使用 java api 执行复制操作,但出现错误。 Java 代码是:
String source = "/home/tmpe/file1.csv";
String dest = "/user/tmpe/file1.csv";
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://node1:8020");
FileSystem fs = FileSystem.get(conf);
Path targetPath = new Path(dest);
Path sourcePath = new Path(source);
fs.copyFromLocalFile(false,true,sourcePath,targetPath);
我得到的错误是:
Exception in thread "main" java.io.IOException: Mkdirs failed to create /user/tmpe
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:378)
at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:364)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:564)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:545)
at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:452)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:229)
at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1230)
我已经创建了/user/tmpe 文件夹,它具有完全的读写权限,但仍然出现此错误。我无法解决问题
【问题讨论】: