【问题标题】:Passing Hadoop program commands through Java Program通过 Java 程序传递 Hadoop 程序命令
【发布时间】:2014-07-19 12:11:27
【问题描述】:
谁能告诉我是否有任何方法可以将hadoop命令从java程序传递给hdfs(例如:为删除目录和文件创建“hadoop fs -mkdir /test”)?我正在尝试通过 java 程序在 hdfs 中创建和删除目录和文件。
还有什么方法可以通过java程序检查hdfs中文件/目录的大小。我正在尝试检查 hdfs 中目录的大小,如果大小为 0,那么我想删除该文件。我需要通过java程序来做所有这些事情。
请帮忙。
【问题讨论】:
标签:
java
hadoop
mapreduce
hdfs
bigdata
【解决方案1】:
看FileSystem,它允许你创建、删除文件等。创建文件并打印文件大小的简单类:
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class Sample extends Configured implements Tool {
public static void main(String[] args) throws Exception {
ToolRunner.run(new Sample(), args);
}
@Override
public int run(String[] strings) throws Exception {
FileSystem fs = FileSystem.get(getConf());
fs.mkdirs(new Path("/sample/dir"));
FSDataOutputStream out = fs.create(new Path("/sample/dir/file.txt"));
out.writeBytes("hello");
out.close();
System.out.println(fs.getFileStatus(new Path("/sample/dir/file.txt")).getLen());
return 0;
}
}