zoukankan      html  css  js  c++  java
  • HDFS Java Client对hdfs文件增删查改

     
    step1:增加依赖
    pom.xml
              ...
         <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
               <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-common</artifactId>
                    <version>2.2.0</version>
                    <exclusions>
                         <exclusion>
                               <artifactId>jdk.tools</artifactId>
                               <groupId>jdk.tools</groupId>
                         </exclusion>
                    </exclusions>
               </dependency>
               <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-hdfs</artifactId>
                    <version>2.2.0</version>
               </dependency>
         
         ...
     
     
     
    step2: 拷贝配置文件
    ‘hdfs-site.xml’和‘core-site.xml’
     
    step3:测试代码

    package cjkjcn.demo.hadoop.hdfs;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.LinkedList;
    import java.util.List;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    /**
     *
     * @author junhong
     *
     * 2017年5月18日
     */
    public class HDFSDao {
         private static Configuration conf = new Configuration();
         private FileSystem hdfs;
         final static String ROOT_PATH = "/user";
         public HDFSDao() {
               conf.addResource("hdfs-site.xml");
               conf.addResource("core-site.xml");
               try {
                    hdfs = FileSystem.get(conf); // 初始化hdfs
               } catch (IOException e) {
                    e.printStackTrace();
               }
               System.out.println("param size=" + conf.size());
         }
         /**
          * 扫描测试文件是否存在
          */
         public void scanFiles() {
               try {
                    Path path = new Path(ROOT_PATH);
                    System.out.println(hdfs.exists(path));
               } catch (IOException e) {
                    e.printStackTrace();
               }
         }
         /**
          * 按行读取文本文件
          * @param file
          * @return
          */
         public List<String> lines(String file) {
               List<String> list = new LinkedList<>();
               Path f = new Path(file);
               try {
                    FSDataInputStream input = hdfs.open(f);
                    InputStreamReader inr = new InputStreamReader(input);
                    BufferedReader read = new BufferedReader(inr);
                    String line;
                    while ((line = read.readLine()) != null) {
                         list.add(line);
                    }
               } catch (IOException e) {
                    e.printStackTrace();
               }
               return list;
         }
    }

     
    注意:
     
    1)若缺少依赖 
     
              <dependency>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-hdfs</artifactId>
                    <version>2.2.0</version>
               </dependency>
     
    将导致如下错误!!
     java.io.Exception: No FileSystem for scheme: hdfs
     
     
    2)测试写文件或者创建目录方法接口时,可能会出现权限问题
    Pemission denied for test
     
  • 相关阅读:
    PCB Genesis加邮票孔(邮票孔增加方向判断--左右上下)实现算法
    PCB SLOT槽孔数量计算方法,同CAM350孔数一致 实现方法
    从上到下打印二叉树II
    数据结构与算法(2)---顺序表
    栈的压入弹出序列
    包含min函数的栈
    顺时针打印矩阵
    数据结构与算法(1)--绪论
    反转链表
    数值的整数次方(快速幂)
  • 原文地址:https://www.cnblogs.com/SeaSky0606/p/6876534.html
Copyright © 2011-2022 走看看