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

news/2024/5/20 5:09:39 标签: eclipse, hdfs, java

文章目录

  • IOUtils方式读取文件
    • 1.文件准备
    • 2.下载安装Eclipse
    • 3.打开eclipse,新建java项目,添加关于hadoop的一些包
    • 4.包内新建类进行开发
    • 5.利用打包的方式生成java jar包
    • 6.验证代码正确性
  • 其它问题:
    • Exception in thread “main“ java.lang.UnsupportedClassVersionError


IOUtils方式读取文件

1.文件准备

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

在这里插入图片描述

2.下载安装Eclipse

在这里插入图片描述

在这里插入图片描述

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

eclipsejavahadoop_27">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.包内新建类进行开发

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码解析:

java">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();
                       }
                   }
           }
    }
}
  • 注意:代码中的url为配置hadoop时,在core-site.xml文件中自己设置的hdfs的访问路径

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

    在这里插入图片描述

    第二种方式:

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

    java">//第一种方式:
    in = fs.open(new Path(uri));
    
    //第二种方式:增加了缓冲区
    in = fs.open(new Path(uri),4096);
    

java_jar_148">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

在这里插入图片描述

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

其它问题:

javalangUnsupportedClassVersionError_176">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)。

在这里插入图片描述


http://www.niftyadmin.cn/n/5058939.html

相关文章

26663-2011 大型液压安全联轴器 课堂随笔

声明 本文是学习GB-T 26663-2011 大型液压安全联轴器. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了大型液压安全联轴器的分类、技术要求、试验方法及检验规则等。 本标准适用于联接两同轴线的传动轴系,可起到限制…

【算法基础】一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、希尔排序和堆排序

目录 1 冒泡排序(Bubble Sort) 2 插入排序(Insertion Sort) 3 选择排序(Selection Sort) 4. 快速排序(Quick Sort) 5. 归并排序(Merge Sort) 6 堆排序 …

Scala第三章节

Scala第三章节 scala总目录 章节目标 理解运算符的相关概述掌握算术, 赋值, 关系, 逻辑运算符的用法掌握交换变量案例理解位运算符的用法 1. 算术运算符 1.1 运算符简介 用来拼接变量或者常量的符号就叫: 运算符, 而通过运算符连接起来的式子就叫: 表达式. 实际开发中, 我…

FFmpeg关键函数介绍

目录 1. av_register_all()——弃用 2. avformat_alloc_context() 3.avformat_open_input() 4.avformat_find_stream_info() 5.av_read_frame() 6.avcodec_send_packet 7.avcodec_receive_frame() 8.avcodec_open2 9. sws_getContext() 10.sws_scale() 1. av_register_…

linux性能优化--性能追踪建议

1.1.常用建议 1.1.1.记大量的笔记(记录所有的事情) 在性能调查之初,我通常会为其创建一个目录,在GNU Emacs中打开一个新的“Notes”文件,开始记录系统的信息。 之后,将性能结果保存到这个目录,并将有意思的和相关的信…

​中秋团圆季《乡村振兴战略下传统村落文化旅游设计》许少辉八月新著

​中秋团圆季《乡村振兴战略下传统村落文化旅游设计》许少辉八月新著 ​中秋团圆季《乡村振兴战略下传统村落文化旅游设计》许少辉八月新著

基于Vue+ELement搭建动态树与数据表格实现分页模糊查询

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…

大语言模型LLM知多少?

你知道哪些流行的大语言模型?你都体验过哪写? GPT-4,Llamma2, T5, BERT 还是 BART? 1.GPT-4 1.1.GPT-4 模型介绍 GPT-4(Generative Pre-trained Transformer 4)是由OpenAI开发的一种大型语言模型。GPT-4是前作GPT系列模型的进一步改进,旨在提高语言理解和生成的能力,…