任何人都可以告诉我,如果有任何方法可以从hdfs传递hadoop命令(例如:创建用于删除目录和文件" hadoop fs -mkdir / test")来自java程序?我试图通过java程序在hdfs中创建和删除目录和文件。
还有什么方法可以通过java程序检查hdfs中files /目录的大小。我试图检查hdfs中目录的大小,如果大小为0,那么我想删除该文件。我需要通过java程序完成所有这些事情。
请帮忙。
答案 0 :(得分:3)
查看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;
}
}