分享

如何写文件?

mituan2008 发表于 2013-10-25 10:46:15 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 6363
看到好几篇文章中提到写文件,自己尝试了一下采用DFSClient写文件,就是不成功,不知道怎么回事。
还有,以前配置0.19版本的时候,在终端执行hadoop dfs -ls打印出的是配置的文件目录,为何现在0.20版本就变成了当前操作目录吗?
以下是文件操作的代码:
Configuration conf = new Configuration();
        conf.addResource(new Path("/usr/hadoop/hadoop-conf/core-site.xml"));
        conf.addResource(new Path("/usr/hadoop/hadoop-conf/hdfs-site.xml"));
        conf.addResource(new Path("/usr/hadoop/hadoop-conf/mapred-site.xml"));
        DFSClient client = new DFSClient(conf);
        OutputStream fsout = client.create("large.zip", true, (short)1, 512);
        
        String src = "/usr/hadoop/input/bigfile.zip";
        try
        {
            RandomAccessFile in = new RandomAccessFile(src, "r");
            byte[] b = new byte[512];
            int len = 0;
            while((len = in.read(b)) > 0)
            {
                fsout.write(b, 0, len);
            }
            in.close();
            fsout.close();
        }
        catch(Exception e)
        {
            log.error(e);
        }

已有(3)人评论

跳转到指定楼层
lxs_huntingjob 发表于 2013-10-25 10:46:15
回复 1# casteloyee
给你一个Guide中的例子:
[ol]
  • // cc FileCopyWithProgress Copies a local file to a Hadoop filesystem, and shows progress
  • import java.io.BufferedInputStream;
  • import java.io.FileInputStream;
  • import java.io.InputStream;
  • import java.io.OutputStream;
  • import java.net.URI;
  • import org.apache.hadoop.conf.Configuration;
  • import org.apache.hadoop.fs.FileSystem;
  • import org.apache.hadoop.fs.Path;
  • import org.apache.hadoop.io.IOUtils;
  • import org.apache.hadoop.util.Progressable;
  • // vv FileCopyWithProgress
  • public class FileCopyWithProgress {
  •   public static void main(String[] args) throws Exception {
  •     String localSrc = args[0];
  •     String dst = args[1];
  •    
  •     InputStream in = new BufferedInputStream(new FileInputStream(localSrc));
  •    
  •     Configuration conf = new Configuration();
  •     FileSystem fs = FileSystem.get(URI.create(dst), conf);
  •     OutputStream out = fs.create(new Path(dst), new Progressable() {
  •       public void progress() {
  •         System.out.print(".");
  •       }
  •     });
  •    
  •     IOUtils.copyBytes(in, out, 4096, true);
  •   }
  • }
  • // ^^ FileCopyWithProgress[/ol]复制代码
  • 回复

    使用道具 举报

    yunjisuanxue 发表于 2013-10-25 10:46:15
    今天也准备这样操作一下,有结果再反馈到这里,感觉RandomAccessFile可能不对。Spork给的例子应当没。
    回复

    使用道具 举报

    skaterxu 发表于 2013-10-25 10:46:15
    请看这个贴:在Windows上使用eclipse编写Hadoop应用程序(Linux运行)
    http://bbs.hadoopor.com/thread-374-1-1.html
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐上一条 /2 下一条