通过Java程序传递Hadoop程序命令

时间:2014-07-19 12:11:27

标签: java hadoop mapreduce hdfs bigdata

任何人都可以告诉我,如果有任何方法可以从hdfs传递hadoop命令(例如:创建用于删除目录和文件" hadoop fs -mkdir / test")来自java程序?我试图通过java程序在hdfs中创建和删除目录和文件。

还有什么方法可以通过java程序检查hdfs中files /目录的大小。我试图检查hdfs中目录的大小,如果大小为0,那么我想删除该文件。我需要通过java程序完成所有这些事情。

请帮忙。

1 个答案:

答案 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;
    }
}