• 【大数据开发技术】实验03-Hadoop读取文件


    Hadoop读取文件

    一、实验目标

    1. 熟练掌握hadoop操作指令及HDFS命令行接口
    2. 掌握HDFS原理
    3. 掌握HDFS的API使用方法
    4. 掌握通过URL类读取HDFS上的文件内容的方法
    5. 掌握FileSystem读取HDFS上文件内容的方法

    二、实验要求

    1. 给出每个实验操作步骤成功的效果截图,。
    2. 对本次实验工作进行全面的总结。
    3. 完成实验内容后,实验报告文件重命名为:学号姓名实验三。

    三、实验内容

    1. 使用FileSystem类读取HDFS上的文件,把文件的内容打印到标准输出流中,分别在本地和集群上进行测试,给出详细实现过程、完整代码和实现效果截图,最终效果图参考图1和图2。(要求在本地新建一个文件,文件名或文件内容体现本人名字,文件内容自拟,中英文均可,使用shell命令上传到HDFS上。)
      1
      图1 FileSystem读取文件本地测试效果图
      2
      图2 FileSystem读取文件集群测试效果图

    2. 通过URL类,读取HDFS上的文件内容,给出主要实现过程、完整代码和实现效果截图,最终效果图参考图3和图4。(要求在本地新建一个文件,文件名或文件内容体现本人名字,文件内容自拟,中英文均可,使用shell命令上传到HDFS上)
      5
      图3 URL读取文件本地测试效果图
      6
      图4 URL读取文件集群测试效果图

    3. 使用FileSystem类读取HDFS上的多个文件,把文件的内容打印到标准输出流中,给出主要实现过程、完整代码和实现效果截图。实现效果截图参考图5(图5是读取cs.txt和cslg.txt两个文件内容的测试效果截图)。要求在本地新建两个,其中两个文件名为自己的学号和姓名,文件内容分别个人简介和家乡信息,文件内容中英文均可,使用shell命令上传到HDFS上。
      9
      图5 FileSystem方式读取多个文件内容

    4. 通过URL类,读取HDFS上的多个文件的内容,给出主要实现过程、完整代码和实现效果截图,最终效果图参考图6。使用上一个实验中的两个文本文件,也可以重新创建两个文本文件,文件命名同上一个实验,文件内容自拟。
      12
      图6 URL方式读取多个文件内容

    四、实验步骤

    实验1

    实验代码

    package com.wjw.hadoop;
    import java.io.IOException;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IOUtils;
    
    public class FileSystemCat01 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String uri = "hdfs://master:9000/wjw01.txt";
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://master:9000");
            FileSystem fs = null;
            FSDataInputStream in =null;
            try{
                fs = FileSystem.get(conf);
                in = fs.open(new Path(uri));
                IOUtils.copyBytes(in, System.out, 4096, false);
                
            }catch(IOException e){
                e.printStackTrace();
            }finally{
                if(in != null){
                    try{
                        fs.close();
                    }catch(IOException e){
                        e.printStackTrace();
                    }
                }
            }
            
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    实验截图

    3
    4

    实验2

    实验代码

    package com.wjw.hadoop;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URL;
    
    import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
    import org.apache.hadoop.io.IOUtils;
    
    public class FileCat01 {
    	
        static{
        	URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
         }
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String arg = "hdfs://master:9000/wjw02.txt";
          InputStream in = null;
          try{
              in = new URL(arg).openStream();
              IOUtils.copyBytes(in, System.out, 2048, false);
              }catch(IOException e){
            	  e.printStackTrace();
              }finally{
            	  IOUtils.closeStream(in);
              }
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    实验截图

    7
    8
    实验3
    实验代码

    package com.wjw.hadoop;
    import java.io.IOException;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IOUtils;
    
    public class FileSystemCat02 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    		args = new String[2];
    		args[0] = "hdfs://master:9000/wjw03.txt";
    		args[1] = "hdfs://master:9000/wjw04.txt";
            Configuration conf = new Configuration();
            conf.set("fs.defaultFS", "hdfs://master:9000");
    		for(int i=0; i < args.length; i++){
            FileSystem fs = null;
            FSDataInputStream in =null;
            try{
                fs = FileSystem.get(conf);
                in = fs.open(new Path(args[i]));
                IOUtils.copyBytes(in, System.out, 4096, false);
                
            }catch(IOException e){
                e.printStackTrace();
            }finally{
                if(in != null){
                    try{
                        fs.close();
                    }catch(IOException e){
                        e.printStackTrace();
                    }
                }
            }
    		}
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    实验截图

    10
    11
    实验4
    实验代码

    package com.wjw.hadoop;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URL;
    
    import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
    import org.apache.hadoop.io.IOUtils;
    
    public class FileCat02 {
    	
        static{
        	URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
         }
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		args = new String[2];
    		args[0] = "hdfs://master:9000/wjw03.txt";
    		args[1] = "hdfs://master:9000/wjw04.txt";
    		for(int i=0; i < args.length; i++){
              InputStream in = null;
              try{
              in = new URL(args[i]).openStream();
              IOUtils.copyBytes(in, System.out, 2048, false);
              }catch(IOException e){
            	  e.printStackTrace();
              }finally{
            	  IOUtils.closeStream(in);
              }
    		}
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    实验截图

    13
    14

    附:系列文章

    实验文章目录直达链接
    实验01Hadoop安装部署https://want595.blog.csdn.net/article/details/132767284
    实验02HDFS常用shell命令https://want595.blog.csdn.net/article/details/132863345
    实验03Hadoop读取文件https://want595.blog.csdn.net/article/details/132912077
    实验04HDFS文件创建与写入https://want595.blog.csdn.net/article/details/133168180
    实验05HDFS目录与文件的创建删除与查询操作https://want595.blog.csdn.net/article/details/133168734
    实验06SequenceFile、元数据操作与MapReduce单词计数https://want595.blog.csdn.net/article/details/133926246
    实验07MapReduce编程:数据过滤保存、UID 去重https://want595.blog.csdn.net/article/details/133947981
    实验08MapReduce 编程:检索特定群体搜索记录和定义分片操作https://want595.blog.csdn.net/article/details/133948849
    实验09MapReduce 编程:join操作和聚合操作https://want595.blog.csdn.net/article/details/133949148
    实验10MapReduce编程:自定义分区和自定义计数器https://want595.blog.csdn.net/article/details/133949522
  • 相关阅读:
    抖音API接口大全
    主机基本安全加固
    Linux quota
    生产线平衡分析常用工具大盘点!
    9. SAP ABAP OData 服务如何支持删除(Delete)操作
    Linux Docker 安装 Elasticsearch Logstash Kibana
    动态规划:06不同路径II
    如何通过企业用户画像更好地拓客
    Gorm源码学习-数据库连接
    3号LNS DELL R710服务器出现1219错误处理备忘录
  • 原文地址:https://blog.csdn.net/m0_68111267/article/details/132912077