zoukankan      html  css  js  c++  java
  • hadoop学习记录(二)HDFS java api

    FSDateinputStream 对象

    FileSystem对象中的open()方法返回的是FSDateInputStream对象,改类继承了java.io.DateInoutStream接口。支持随机访问

    Seekable接口

    支持在文件中找到指定位置,并提供一个查询当前位置相对于文件起始位置偏移量的查询方法。

    public interface Seekable{
        //seek()可以移到文件中任意一个绝对位置
        void seek(long pos);
        long getPos();
        boolean  seekToNewSource(long targetPos);
    }
    

     需要注意的是:seek()方法是一个相对高开销的操作,需要慎重使用。如要访问文件,还是用流数据如MapReduce,而不是大量的seek()!

    写入数据

    FIleSystem有新建文件夹的方法

    • public FSDaateOutputStream create(path f);该方法指定一个path对象,如果不存在则自动创建有时候我们希望文件夹不存在时就报出失败而不是创建完写入,这时就需要先调用exists()来判断。
    • 另一个方法是append(),允许在一个已有文件的末尾追加数据
    • progress()方法用于传递回调接口,可以通知应用数据写入datenode的进度。
     1 String localSrc = args[0];
     2 String dst = args[1];
     3 //获取文件读取流
     4 InputStream in = new InputStream(new FileInputStream(localSrc));
     5 
     6 Configuration conf = new Configuration();
     7 FileSystem fs = FileSystem.get(URI.create(dst),conf);
     8 OutputStream out  = fs,create(new Path(dst),new Progressable(){
     9     public void progress(){
    10        Syso.("running!")
    11     }
    12 });

    FSDataOutputStream对象

    该对象不允许在写入文件时定位,只能顺序写入,追加在文件末尾。

    FileStatus对象

    FIleSystem.getFileStatus()方法可以返回一个文件的信息和状态。包括文件长度,块大小,副本,修改时间,所有者及权限。

  • 相关阅读:
    JQUERY
    五分钟技术演讲
    T-SQL基础--chp10可编程对象学习笔记[下]
    SQL中用SET赋值和用SELECT赋值的区别。
    Can't find file: './mysql/plugin.frm' (errno: 13)[mysql数据目录迁移错位]错误解决
    jetty属性
    JRebel 5.3.2
    vue+mongoodb+node连接数据库
    css样式
    超出文本显示一行文字
  • 原文地址:https://www.cnblogs.com/kinsomy/p/5572680.html
Copyright © 2011-2022 走看看