【问题标题】: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;
        }
    }
    

    【讨论】:

    • 嗨,Alexey,感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多