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

news2024/11/25 16:01:31

文章目录

  • 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,有的时候有点慢

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

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

    在这里插入图片描述

    第二种方式:

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

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

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中的文件

其它问题:

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.coloradmin.cn/o/1050591.html

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

相关文章

TouchGFX界面开发 | 添加触摸屏驱动

使用STM32CubeMX移植TouchGFX 一文中介绍了如何用TouchGFX点亮屏幕,但是此时屏幕还没有触摸的功能。下面将介绍如何添加触摸屏驱动到TouchGFX中 一、STM32CubeMX配置 在使用STM32CubeMX移植TouchGFX 文中的STM32CubeMX配置基础上,再激活一个定时器&…

Pikachu靶场——XXE 漏洞

文章目录 1. XXE1.1 查看系统文件内容1.2 查看PHP源代码1.3 查看开放端口1.4 探测内网主机 1. XXE 漏洞描述 XXE(XML External Entity)攻击是一种利用XML解析器漏洞的攻击。在这种攻击中,攻击者通过在XML文件中插入恶意实体来触发解析器加载…

自然语言处理(NLP)学习之与HanLP的初相识

目录 前言 一、自然语言处理基本知识 1、NLP类别 2、核心任务 二、Hanlp简要介绍 三、Hanlp云服务能力 1、全新云原生2.x 2、Python api调用 3、Go api调用 4、Java api调用 四、Hanlp native服务 1、本地开发 总结 前言 在ChatGPT的滚滚浪潮下,也伴随着人工智…

深入理解JavaScript中的事件冒泡与事件捕获

在JavaScript中,事件是交互式网页开发中的关键概念之一。了解事件冒泡和事件捕获是成为一名优秀的前端开发者所必需的技能之一。本文将深入探讨这两个概念,解释它们是如何工作的,以及如何在实际应用中使用它们来处理事件。 一.什么是事件冒泡…

No151.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

冲刺十五届蓝桥杯P0002 日期统计

文章目录 题目分析代码 题目 分析 需要明白一些概念,子序列、连续子序列。 1.子序列(subsequence)是指原始序列中按照相同顺序选择零个或多个元素而形成的序列。连续子序列(subarray)是指原始序列中相邻位置的元素构…

计算机网络之传输层

计算机网络 - 传输层 计算机网络 - 传输层 UDP 和 TCP 的特点UDP 首部格式TCP 首部格式TCP 的三次握手TCP 的四次挥手TCP 可靠传输TCP 滑动窗口TCP 流量控制TCP 拥塞控制 1. 慢开始与拥塞避免2. 快重传与快恢复 网络层只把分组发送到目的主机,但是真正通信的并不是…

网络-OSI、TCP、浏览器URL、CDN

文章目录 前言一、OSI七层模型二、TCP/IP和UDPTCP三次握手四次挥手 三、 浏览器输入URLURLDNS查询TCP/IP连接浏览器缓存强缓存协商缓存断开连接 浏览器渲染 四、 CDN总结 前言 本文记录OSI七层参考模型,和TCP/IP基本介绍。 一、OSI七层模型 七层参考模型分别是&am…

【C++入门到精通】C++入门 —— set multiset (STL)

阅读导航 前言一、set简介二、std::set1. std::set简介2. std::set的使用- 基本使用- std::set的模板参数列表- std::set的构造函数- std::set的迭代器- std::set容量与元素访问函数 3. set的所有函数(表) 三、std::multiset1. std::multiset简介 四、st…

农产品经营小程序商城的作用是什么?

农场或拥有稳定货源的商家更适合做线上生鲜蔬果生意,近些年随着线上电商崛起,如何打通并且加深同城、到店、快递货品销售场景成为商家们需要思考的;微信是企业商家重要的营销平台,因此在微信卖货增长很重要,但想要完善…

【中国知名企业高管团队】系列22:滴滴

大家好! 今天华研荟的走进中国知名企业高管团队系列带大家认识滴滴。 滴滴公司是出行领域的先行者,也是一个典型样本。通过滴滴公司的名字变迁我们可以感受到滴滴公司的业务发展,这也是整个出行行业公司的发展路径: 第一阶段&a…

神经辐射场(NeRF)2023最新论文及源代码合集

神经辐射场(NeRF)作为一种先进的计算机图形学技术,能够生成高质量的三维重建模型,在计算机图形学、计算机视觉、增强现实等领域都有着广泛的应用前景,因此,自2020年惊艳亮相后,神经辐射场也成为…

C理解(三):结构体,共用体,枚举

结构体 结构体元素访问本质是指针方式,依据元素在结构体中的偏移量和元素类型进行访问 元素占字节数和类型占字节数不同,导致结构体的元素偏移量要复杂,因此结构体需要对齐访问 结构体对齐规则 结构体本身应在在4字节对齐处(占4个字节) 每个元素都对其存…

二、MAVEN的安装和配置

二、MAVEN的安装和配置 1.官网下载:http://maven.apache.org/download.cgi 2.解压文件包 1.apache-maven-3.5.2-bin.zip 直接解压到指定安装路径。 2.apache-maven-3.5.2-src.zip maven源码包。 3.配置环境变量,类似jdk环境配置 1.创建M2_HOME环境变…

关于操作系统与内核科普

关于操作系统与内核科普 一.什么是操作系统 操作系统是管理计算机硬件与软件资源的计算机程序。它为计算机硬件和软件提供了一种中间层。 操作系统是一种软件,主要目的有三种: 一.管理计算机资源,这些资源包括CPU,内存&#xff0…

正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。

正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。 这是刚启动Autodesk 2024产品就弹出的弹窗,重启之后启动还是有这个 一直阻止安装程序运行 出现问题的原因是安装包存在问题 使用正确的安装包即可解决这个问题 需要的朋友查看图片或者评伦取…

【剑指Offer】7.重建二叉树

题目 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和 vin 均无重复…

《Python趣味工具》——ppt的操作(2)

在上次,我们对PPT进行了简单的处理;本次,我们要将PPT中的文本内容写入到 Word 文档中并添加标题,让 Word 文档看上去结构清晰,方便使用。 文章目录 一、安装docx模块:二、从PPT中转移文字:1. 创…

Elasticsearch基础篇(二):Elasticsearch在windows和liunx上的安装部署

Elasticsearch简介 前言1. Windows环境部署Elasticsearch1.1 下载并解压Elasticsearch压缩包1.2 命令行启动elasticsearch1.3 验证是否成功启动elasticsearch1.4 关闭Elasticsearch1.5 在Windows上安装Elasticsearch作为服务 2. Liunx环境部署Elasticsearch安装 Elasticsearch …

Python 爬虫 / web 面试常见问题

嗨喽,大家好呀~这里是爱看美女的茜茜呐 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可 爬虫面试常见…