大数据培训技术Hadoop课程之HDFS的API操作

发布时间:2019年09月24日作者:atguigu浏览次数:708

作为大数据培训课程Hadoop内容的核心技术HDFS的API操作相当重要,在我们大数据项目开发中比较常见,希望大家在大数据培训学习时一定要注意。

1 HDFS文件上传(测试参数优先级)

1.编写源代码

@Test

public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {

 

      // 1 获取文件系统

      Configuration configuration = new Configuration();

      configuration.set(“dfs.replication”, “2”);

      FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop102:9000”), configuration, “atguigu”);

 

      // 2 上传文件

      fs.copyFromLocalFile(new Path(“e:/banzhang.txt”), new Path(“/banzhang.txt”));

 

      // 3 关闭资源

      fs.close();

 

      System.out.println(“over”);

}

2.将hdfs-site.xml拷贝到项目的根目录下

<?xml version=”1.0″ encoding=”UTF-8″?>

<?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

 

<configuration>

   <property>

      <name>dfs.replication</name>

        <value>1</value>

   </property>

</configuration>

3.参数优先级

参数优先级排序:(1)客户端代码中设置的值 >(2)ClassPath下的用户自定义配置文件 >(3)然后是服务器的默认配置

2 HDFS文件下载

@Test

public void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException{

 

      // 1 获取文件系统

      Configuration configuration = new Configuration();

      FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop102:9000”), configuration, “atguigu”);

 

      // 2 执行下载操作

      // boolean delSrc 指是否将原文件删除

      // Path src 指要下载的文件路径

      // Path dst 指将文件下载到的路径

      // boolean useRawLocalFileSystem 是否开启文件校验

      fs.copyToLocalFile(false, new Path(“/banzhang.txt”), new Path(“e:/banhua.txt”), true);

 

      // 3 关闭资源

      fs.close();

}

3 HDFS文件夹删除

@Test

public void testDelete() throws IOException, InterruptedException, URISyntaxException{

 

   // 1 获取文件系统

   Configuration configuration = new Configuration();

   FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop102:9000”), configuration, “atguigu”);

 

   // 2 执行删除

   fs.delete(new Path(“/0508/”), true);

 

   // 3 关闭资源

   fs.close();

}

4 HDFS文件名更改

@Test

public void testRename() throws IOException, InterruptedException, URISyntaxException{

 

   // 1 获取文件系统

   Configuration configuration = new Configuration();

   FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop102:9000”), configuration, “atguigu”);

 

   // 2 修改文件名称

   fs.rename(new Path(“/banzhang.txt”), new Path(“/banhua.txt”));

 

   // 3 关闭资源

   fs.close();

}

5 HDFS文件详情查看

查看文件名称、权限、长度、块信息

@Test

public void testListFiles() throws IOException, InterruptedException, URISyntaxException{

 

   // 1获取文件系统

   Configuration configuration = new Configuration();

   FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop102:9000”), configuration, “atguigu”);

 

   // 2 获取文件详情

   RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path(“/”), true);

 

   while(listFiles.hasNext()){

      LocatedFileStatus status = listFiles.next();

 

      // 输出详情

      // 文件名称

      System.out.println(status.getPath().getName());

      // 长度

      System.out.println(status.getLen());

      // 权限

      System.out.println(status.getPermission());

      // 分组

      System.out.println(status.getGroup());

 

      // 获取存储的块信息

      BlockLocation[] blockLocations = status.getBlockLocations();

 

      for (BlockLocation blockLocation : blockLocations) {

 

          // 获取块存储的主机节点

          String[] hosts = blockLocation.getHosts();

 

          for (String host : hosts) {

             System.out.println(host);

          }

      }

 

      System.out.println(“———–班长的分割线———-“);

   }

 

// 3 关闭资源

fs.close();

}

6 HDFS文件和文件夹判断

@Test

public void testListStatus() throws IOException, InterruptedException, URISyntaxException{

 

   // 1 获取文件配置信息

   Configuration configuration = new Configuration();

   FileSystem fs = FileSystem.get(new URI(“hdfs://hadoop102:9000”), configuration, “atguigu”);

 

   // 2 判断是文件还是文件夹

   FileStatus[] listStatus = fs.listStatus(new Path(“/”));

 

   for (FileStatus fileStatus : listStatus) {

 

      // 如果是文件

      if (fileStatus.isFile()) {

             System.out.println(“f:”+fileStatus.getPath().getName());

          }else {

             System.out.println(“d:”+fileStatus.getPath().getName());

          }

      }

 

   // 3 关闭资源

   fs.close();

}

想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训 UI/UE设计培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)

西安市高新区和发智能大厦(西安校区)