zoukankan      html  css  js  c++  java
  • HDFS之append数据到已存在文件中

    遇到一个问题,想往已存在的hdfs文件中直接添加数据,默认的话应该是被拒绝的。查看了一些资料,可以这样操作:

    1. pdfs-site.xml中添加append支持:

      <property> 
          <name>dfs.support.append</name>
          <value>true</value> 
      </property>
      
    2. 编写appendToFile函数:

      下面的函数建立在FileSystem已配置且连接成功的情况下。

      public void appendToFile(String path, String line){
      
          Boolean isAppendable = Boolean.valueOf(fs.getConf().get("dfs.support.append"));
      
          if (isAppendable){
              try{
                  Path f = new Path(path);
                  FSDataOutputStream dos = null;
                  if(!fs.exists(f)){
                      dos = fs.create(f);
                  } else{
                      dos = fs.append(f);
                  }
              dos.writeBytes(line);
              dos.close();
              } catch (Exception e){
                  e.printStackTrace();
              }
          }
          else{
              System.err.println("Please set the dfs.support.append property to true");
          }
      }
      
      
    3. 确保hdfs不在安全模式下

    Last but not least,一定要检查自己的文件路径有没有写错。其实,导致我的错误的始作俑者是文件路径。我把/user/hadoop/flink-test/test写成了user/hadoop/flink-test/test,少写了一个/。哈哈哈,简直是笑话。

  • 相关阅读:
    桥梁模式
    原型模式
    css backgroundposition
    eclipse配置了maven,项目报错
    SQL 练习题目
    Springmvc + Ibatis 搭建 点餐系统
    Delphi 性能优化工具
    Delphi的接口陷阱
    delphi 内存管理,定期释放
    Delphi制作数据感知控件之浮想联翩
  • 原文地址:https://www.cnblogs.com/bjwu/p/10238704.html
Copyright © 2011-2022 走看看