通过java程序传递hadoop程序命令

hxzsmxv2  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(314)

有没有人能告诉我有没有办法从java程序中把hadoop命令传递给hdfs(例如:create for delete directory and files“hadoop fs-mkdir/test”)?我试图通过java程序在hdfs中创建和删除目录和文件。
还有什么方法可以通过java程序检查hdfs中文件/目录的大小。我正在尝试检查hdfs中目录的大小,如果大小为0,那么我想删除该文件。我需要通过java程序来做所有这些事情。
请帮忙。

wbgh16ku

wbgh16ku1#

看看文件系统,它允许您创建、删除文件等。创建文件并打印其大小的简单类:

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

相关问题