• Eclipse环境基于HDFS的API进行开发



    IOUtils方式读取文件

    1.文件准备

    上传README.txt文件到HDFS上,文件内容自定义。

    在这里插入图片描述

    2.下载安装Eclipse

    在这里插入图片描述

    在这里插入图片描述

    • 上面的是安装包的方式进行安装,下载好后找到下载位置点击eclipse-inst安装,选择java即可
    • 下面的直接是对应的源码下载,eclipse可以进行多种语言开发,我们选择java版本的
    • 选择上面任意一种方式后,多点几下click here,有的时候有点慢

    3.打开eclipse,新建java项目,添加关于hadoop的一些包

    新建一个java project,以下红框内方法都行:

    在这里插入图片描述

    这里选择我们linux系统上安装的java版本,而不用eclipse自带的版本,避免后续的问题(待会会提到):

    在这里插入图片描述

    创建项目中的包:

    在这里插入图片描述

    在这里插入图片描述

    添加一些我们要用的hadoop的jar包:

    在这里插入图片描述

    在这里插入图片描述

    • 包在对应的hadoop安装目录:/home/chenqi/hadoop-3.3.6/share/hadoop

    • 将hadoop目录下的common里面的包,和里面lib下面的包导入即可

      在这里插入图片描述

    • 对应的还有hdfs、mapreduce、yarn相关的包,也是同样的操作

    4.包内新建类进行开发

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    代码解析:

    package org.chenqi.hadoop.hdfs.fs;
    
    import java.io.IOException;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FSDatalnputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IOUtils;
    
    public class FileSystemCat {
    
           public static void main(String[] args) {
               //设置输入文件路径
               String uri ="hdfs://master:9000/README.txt";
               //配置项对象
               Configuration conf = new Configuration();
               //初始化FileSystem及输入流对象FSDataInputStream
               FileSystem fs = null;
               FSDataInputStream in = null;
    
               try{
                   //给FileSystem对象赋值
                   fs = FileSystem.get(conf);
                   //打开uri位置的文件的输入流
                   in = fs.open(new Path(uri));
                   //使用IO工具类,将输入流拷贝到标准输出流中,每次拷贝4096字节,且流不自动关闭
                   IOUtils.copyBytes(in,System.out,4096,false);
               }catch(IOException e){
                   e.printStackTrace();
               }finally{//在finally中,做关闭操作
                   if(in != null){
                       //关闭输入流
                       IOUtils.closeStream(in);
                   }
                   if(fs !=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
    • 42
    • 43
    • 44
    • 45
    • 注意:代码中的url为配置hadoop时,在core-site.xml文件中自己设置的hdfs的访问路径

    • 调用FileSystem静态方法get生成File System对象fs(静态get方法有两种重载方式),这里采用了第一种方式。

      在这里插入图片描述

      第二种方式:

      FileSystem fs = FileSystem.get(URl.create(uri),conf);
      
      • 1
    • 调用fs的open方法返回一个FSDataInputStream流(open方法有两种重载方式),这里采用了第一种方式

      //第一种方式:
      in = fs.open(new Path(uri));
      
      //第二种方式:增加了缓冲区
      in = fs.open(new Path(uri),4096);
      
      • 1
      • 2
      • 3
      • 4
      • 5

    5.利用打包的方式生成java jar包

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    6.验证代码正确性

    提交jar包至HDFS上运行(其中org.chenqi.hadoop.hdfs.fs.FileSystemCat是自定义FileSystemCat类的全限定名),查看结构:显示Readme.txt文件的内容。

    hadoop jar FileSystemCat.jar org.chenqi.hadoop.hdfs.fs.FileSystemCat
    
    • 1

    在这里插入图片描述

    内容正确:为我们开头上传到hdfs中的文件

    其它问题:

    Exception in thread “main“ java.lang.UnsupportedClassVersionError

    在这里插入图片描述

    解决办法:

    eclipse创建项目时默认使用的jdk版本为1.7,但我们Linux系统安装的jdk为1.8,版本不一样导致该问题,改一下eclipse项目使用的jdk版本即可:

    在这里插入图片描述

    1. 修改Java Build Path

      右键点击项目,选择“Properties”,依次选择“Java Build Path”->“Libraries”,单击选中“JRE System Library”,然后点击“Edit”按钮进行编辑。选择“Alternate JRE”或“Workspace default JRE”的jdk版本(一般应该相同)均可,点击“Finish”。

      在创建项目的时候,我们已经选择使用系统中的jdk版本,所有一般这里不会有问题

      在这里插入图片描述

      在这里插入图片描述

    2. 修改Java Compiler

    选择“Java Compiler”,勾选“Enable project specific settings”,将“Compiler compliance level”设置为与jvm一致的版本(1.8)。

    在这里插入图片描述

  • 相关阅读:
    【Linux】Linux/Unix五种I/O模型
    【数据结构】树与二叉树(六):二叉树的链式存储
    学习ASP.NET Core Blazor编程系列二十五——登录(4)
    【JVM技术专题】深入分析CG管理和原理查缺补漏「番外篇」
    计算机的发展史以及未来 App和Cloud这10年发展很快,被忽略的硬性的螺旋上升 QCon 大会2022
    Linux创建用户和密码相关的命令useradd、groupadd、passwd和userdel应用
    LeetCode.46. 全排列(回溯法入门)
    使用Java实现一个简单的贪吃蛇小游戏
    flink 1.17.1的pom.xml模板
    飞天使-mysql8.0远程连接允许
  • 原文地址:https://blog.csdn.net/qq_45491628/article/details/133418812