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

news2024/12/24 2:36:23

文章目录

  • 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();
                }
            }
        }
        
    }

}

实验截图

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);
          }
    }
}


实验截图

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();
                }
            }
        }
		}
    }

}

实验截图

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);
          }
		}
	}

}

实验截图

13
14

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【STM32学习】I2C通信协议 | OLED屏

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《STM32学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 今天需要将代码烧录到开发板中&#xff0c;本喵默认大家都会创建工程&#xff0c;以及进行基本的…

黄金代理如何选择平台?窍门在这儿

作为一个黄金代理平台&#xff0c;什么才是最重要的呢&#xff1f;笔者认为以下三个方面是最重要的&#xff0c;一个是资质&#xff0c;第二个是口碑&#xff0c;第三个是平台的软件。这三者是成为黄金代理要考虑的最重要的三个因素&#xff0c;也直接关系大黄金代理的职业生涯…

大模型股票交易-挖掘新闻和情绪价值

埃隆马斯克 (Elon Musk) 的星际飞船于 2023 年 4 月 20 日升空后爆炸。想象一下&#xff0c;当时您正在观察股市&#xff0c;突然出现新闻&#xff0c;您会如何交易 TSLA 股票&#xff1f; 我希望您不要与我争论&#xff0c;您作为交易者&#xff08;而不是投资者&#xff09;要…

基于Kubernetes的Serverless PaaS稳定性建设万字总结

作者&#xff1a;许成铭&#xff08;竞霄&#xff09; 数字经济的今天&#xff0c;云计算俨然已经作为基础设施融入到人们的日常生活中&#xff0c;稳定性作为云产品的基本要求&#xff0c;研发人员的技术底线&#xff0c;其不仅仅是文档里承诺的几个九的 SLA 数字&#xff0c…

【Redis】第6讲 Redis的启动和关闭

前端运行方式 进入/usr/local/bin目录下查看是否有redis-server rootsue-virtual-machine:/opt/redis-5.0.4# cd /usr/local/bin/ 然后启动redis-server服务器 rootsue-virtual-machine:/usr/local/bin# redis-server 后台运行方式 前端运行的话&#xff0c;界面中输入任何…

MTR 网络连通性测试工具 基础入门 整理

MTR MTR的全称是 my traceroute&#xff0c;是一个集合了 ping 与 traceroute 功能的网络诊断工具&#xff0c;广泛应用于链路测试。相对于 traceroute 只会做一次链路跟踪测试&#xff0c;mtr会对链路上的相关节点做持续探测并给出相应的统计信息。因此&#xff0c;mtr能避免…

计算机网络 实验二 交换机的基本配置

实验二 交换机的基本配置 实验目的 • 掌握交换机的配置方式及切换命令&#xff1b; • 掌握交换机端口的基本配置&#xff1b; • 掌握交换机mac地址的查看与管理方法。 实验设备 以太网交换机一台服务器一台PC机五台配置电缆、网线若干 网络拓扑及IP地址分配 给计算…

AI写作生成器,文章生成器

AI写作生成器&#xff0c;也叫文章生成器。你是否常常为了创作大量文案而感到疲惫不堪&#xff1f;是否曾经为了一篇好的博客、一个广告文案或一封邮件而煞费苦心&#xff1f;AI写作生成器可以帮助你轻松解决这些问题&#xff0c;让文案创作变得如丝般顺滑。 147GPT批量文章生成…

Premiere Pro切换中文

安装了Premiere Pro突然发现界面语言是英文版的&#xff0c;首选项里也没有UI语言切换选项&#xff0c;怎么在不重装的情况下&#xff0c;将英文版Premiere Pro怎么切换成中文&#xff1f; 1、打开安装好的Premiere Pro&#xff0c;可以看到界面语言是英文版的; 2、进入pr后,新…

【Java 基础篇】Java网络编程实战:P2P文件共享详解

Java网络编程是现代软件开发中不可或缺的一部分&#xff0c;因为它允许不同计算机之间的数据传输和通信。在本篇博客中&#xff0c;我们将深入探讨Java中的P2P文件共享&#xff0c;包括什么是P2P文件共享、如何实现它以及一些相关的重要概念。 什么是P2P文件共享&#xff1f; …

Socket编程基础(1)

目录 预备知识 socket通信的本质 认识TCP协议和UDP协议 网络字节序 socket编程流程 socket编程时常见的函数 服务端绑定 整数IP和字符串IP 客户端套接字的创建和绑定 预备知识 理解源IP和目的IP 源IP指的是发送数据包的主机的IP地址&#xff0c;目的IP指的是接收数据包…

猫头虎博主的AI魔法课:一起探索CSDN AI工具集的奥秘!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Merge之后,还没有Push,如何回滚

Merge之后&#xff0c;还没有Push&#xff0c;如何回滚 Merge之后&#xff0c;还没有Push&#xff0c;如何回滚 1&#xff1a;代码操作&#xff1a; 1&#xff1a;git log 查看git执行历史记录 GIT所有的执行记录会以倒叙呈现&#xff1b;最上面的就是需要回滚的merge序列号&a…

凹凸贴图和法线贴图的区别

1、什么是凹凸贴图 凹凸贴图&#xff08;bump mapping&#xff09;是一种计算机图形学中的渲染技术&#xff0c;用于在给定的表面上模拟微小的凹凸纹理。通过在表面法线方向上微调每个像素的光照值&#xff0c;可以给平滑的表面增加视觉上的凹凸感。 在凹凸贴图中&#xff0c;每…

第一百五十回 自定义组件综合实例:游戏摇杆一

文章目录 概念介绍实现方法示例代码我们在上一章回中介绍了自定义组件相关的内容,本章回中将综合使用这些内容 自定义游戏摇杆组件.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们介绍的游戏摇杆就是一个内层的小圆嵌套一个外层的大圆,大圆的位置不变,小圆只能在大圆…

读取jsonArray文件并转换为java对象工具类

json文件中存放jsonArray&#xff0c;将其读取出来并转换为java对象&#xff0c;转换的对象需要根据传入的对象动态转换&#xff0c;工具类编写如下&#xff1a; import lombok.extern.slf4j.Slf4j; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOEx…

接口自动化测试TestNG框架环境搭建

TestNG是什么&#xff1f; TestNG是一个功能强大的测试框架&#xff0c;是Junit的一个增强版本&#xff0c;Junit在使用多年之前&#xff0c;TestNG才生效存在。NG 代表“下一代”。 TestNG框架提供了以下功能和解答我们的问题&#xff1a;“为什么我们需要TestNG”&#xff…

39 | selenium基础架构,UI测试架构

什么是测试基础架构&#xff1f; 测试基础架构指的是&#xff0c;执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此&#xff0c;我们也把测试基础架构称之为广义的测试执行环境。通常来讲&#xff0c;测试基础架构主要包括以下内容&#xff1a; 执行测试的机器…

BANI时代下,项目如何实现价值交付?

随着时代的变化&#xff0c;继VUCA时代后、新的语言出现&#xff1a;BANI一词逐渐流行起来。BANI&#xff0c;取自四个英文单词 Brittle&#xff08;脆弱的&#xff09;、Anxious&#xff08;焦虑的&#xff09;、Nonlionear&#xff08;非线性的&#xff09;、Incomprehensibl…