使用java访问HDFS

news2024/11/15 8:52:57

文章目录

  • 利用Java编写程序访问HDFS
    • 1、创建Maven项目
    • 2、添加相关依赖
    • 3、创建日志属性文件
    • 4、启动集群HDFS服务
    • 5、在HDFS上创建文件

利用Java编写程序访问HDFS

1、创建Maven项目

  • 创建Maven项目 - HDFSDemo
    在这里插入图片描述

  • 单击【Create】按钮
    在这里插入图片描述

2、添加相关依赖

  • pom.xml文件里添加hadoopjunit依赖
<dependencies>             
    <!--hadoop客户端-->                       
    <dependency>                                  
        <groupId>org.apache.hadoop</groupId>      
        <artifactId>hadoop-client</artifactId>    
        <version>3.3.4</version>                  
    </dependency>     
    <!--单元测试框架-->                            
    <dependency>                                  
        <groupId>junit</groupId>                  
        <artifactId>junit</artifactId>            
        <version>4.13.2</version>                 
    </dependency>                                 
</dependencies>                                                      
  • Maven Repository(Maven仓库)- https://mvnrepository.com/
    请添加图片描述

  • 搜索hadoop
    请添加图片描述

  • 单击hadoop-client超链接
    请添加图片描述

  • 单击3.3.4超链接
    请添加图片描述

3、创建日志属性文件

在resources目录里创建log4j.properties文件

log4j.rootLogger=stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/hdfs.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

4、启动集群HDFS服务

  • 在主节点上执行命令:start-dfs.sh
    请添加图片描述

  • 在Hadoop WebUI界面查看
    请添加图片描述

5、在HDFS上创建文件

  • 在HDFS Shell里利用hdfs dfs -touchz命令可以创建时间戳文件

  • /ied01目录创建hadoop.txt文件

  • 创建net.zwh.hdfs包,在包里创建CreateFileOnHDFS

  • 编写create1()方法

package net.zwh.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

import java.net.URI;

/**
 * 功能:在HDFS上创建文件
 */
public class CreateFileOnHDFS {
    @Test
    public void create1() throws Exception {
        // 创建配置对象
        Configuration conf = new Configuration();
        // 定义统一资源标识符(uri: uniform resource identifier)
        String uri = "hdfs://master:9000";
        // 创建文件系统对象(基于HDFS的文件系统)
        FileSystem fs = FileSystem.get(new URI(uri), conf);
        // 创建路径对象(指向文件)
        Path path = new Path(uri + "/ied01/hadoop.txt");
        // 基于路径对象创建文件
        boolean result = fs.createNewFile(path);
        // 根据返回值判断文件是否创建成功
        if (result) {
            System.out.println("文件[" + path + "]创建成功!");
        } else {
            System.out.println("文件[" + path + "]创建失败!");
        }
    }
}

这里导包很容易出错
请添加图片描述

  • 运行程序,查看结果
    请添加图片描述

  • 利用Hadoop WebUI查看
    请添加图片描述

  • /ied01目录里确实创建了一个0字节的hadoop.txt文件,有点类似于Hadoop Shell里执行hdfs dfs -touchz /ied01/hadoop.txt命令的效果,但是有一点不同,hdfs dfs -touchz命令重复执行,不会失败,只是不断改变该文件的时间戳。

再次运行程序,由于hadoop.txt已经存在,此时会提示用户创建失败
请添加图片描述

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

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

相关文章

【问答篇】Java 基础篇面试题(二)

每天进步一点~ 01、问&#xff1a;PreparedStatement与Statement的区别&#xff1f; 答&#xff1a; PreparedStatement是预编译语句执行者&#xff0c;数据库对sql语句进行预编译&#xff1b;Statement是执行时对sql语句进行编译 Statement存在sql注入的问题&#xff0c;Prep…

25.读写文件

到目前为止&#xff0c;我们讨论了如何处理数据&#xff0c; 以及如何构建、训练和测试深度学习模型。 然而&#xff0c;有时我们希望保存训练的模型&#xff0c; 以备将来在各种环境中使用&#xff08;比如在部署中进行预测&#xff09;。 此外&#xff0c;当运行一个耗时较…

English Learning - L1-3 从此没有不会的表达(上) 2022.12.12 周一

English Learning - L1-3 从此没有不会的表达&#xff08;上&#xff09; 2022.12.12 周一4 名词性从句名词性从句的类型4.1 各种从句的变身4.1.1 陈述句的变身一个严肃的问题&#xff1a;为什么要加 that ?那什么情况下&#xff0c;that 是可以省略的&#xff1f;特殊动词4.1…

Okhttp源码分析实践(三)【WebDemo的简单实现】

我们继续深入探索okhttp的知识点和面。本章,我们一起来实现一些简单的服务端Demo API,至于为什么,其实之前也说过,一方面是为了使我们之前所学的http的基础知识得到实践运用,另外一方面,是为了我们之后自己编写实现okhttp时,避免不了肯定要做很多API测试,免费的测试api…

vue3 provide与inject进行状态管理

vue3 provide与inject进行状态管理 一、数据仓库准备 在store–>新建index.js文件&#xff0c;作为仓库数据 状态集中管理数据实现响应式ref reactive—>对象中存储状态msg,age,counter import {reactive} from vue const store{//数据state:reactive({msg:"Hello …

WebRTC:P2P音视频通话基础概述

前言 本篇文章参考WebRTC基础知识详解_签约计划_IT酷盖_InfoQ写作社区&#xff0c;介绍了P2P音视频通信的场景下的一些基础知识&#xff0c;包括WebRTC的基本架构、协议栈&#xff0c;一对一通话基础&#xff0c;和一对一通话原理三部分。 WebRTC基本架构 WebRTC 的组件架构分…

css样式补充,项目前置认知,精灵图,背景图片大小,阴影,过渡,SEO简介

1、css样式补充&#xff0c;项目前置认知&#xff0c;字体图标 学习目标&#xff1a; u 能够在网页中使用 精灵图 u 能够使用 背景大小属性 &#xff0c;设置背景图片的大小 u 能够认识 CSS书写顺序&#xff0c;提高代码专业性和浏览器渲染性能 u 能够使用的专业方式完成 项目结…

1_MyBatis入门-1_认识框架

原生JDBC实现CURD的问题 1 编码繁琐 2 需要我们自己将结果集映射成对象 3 性能不太好 连接池 缓存 4 SQL语句和java代码的耦合度特别高 5 … … MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code&#xff0c;且…

java高级--Elasticsearch

一、概述搜索引擎 1.1 什么是搜索引擎 概念&#xff1a;用户输入想要的关键词&#xff0c;返回含有该关键词的所有信息。 场景&#xff1a; 1、互联网搜索&#xff1a;谷歌、百度、各种新闻首页 2、 站内搜索&#xff08;垂直搜索&#xff09;&#xff1a;企业OA查询订单、人员…

Linx基础(8)shell基础

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【参考文章】 参考文章&#xff1a;https://howard2005.blog.csdn.net/article/details/127139576?spm1001.2014.3001.5502 文章目录一、常用shell命令1. 管道命令任务1、查看/etc目录信息前5行信息任务2、查看/etc/…

【谷歌新作】Transformer杀入机器人领域,RT-1:97%成功率,轻松完成700多条控制指令

谷歌机器人团队等在机器人领域构建了一个多任务 transformer 模型&#xff0c;显著改进了对新任务、环境和对象的零样本泛化。 我们知道&#xff0c;机器学习&#xff08;ML&#xff09;多个子领域&#xff08;如 NLP 和 CV&#xff09;的最新重大进展通过一种共享的通用方法实…

ZYNQ之FPGA学习----SPI协议驱动模块仿真实验

1 SPI通信协议简介 SPI通信协议基础知识学习&#xff1a;硬件设计基础----通信协议SPI 2 实验任务 设计SPI驱动模块&#xff0c;并进行仿真验证&#xff0c;观察仿真波形 3 实验设计 3.1 创建工程 新建工程&#xff0c;操作如图所示&#xff1a; 输入工程名和路径&#x…

m基于K-means聚类算法和神经网络的模糊控制器设计matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 聚类就是按照某个特定标准把一个数据集分割成不同的类或簇&#xff0c;使得同一个簇内的数据对象的相似性尽可能大&#xff0c;同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一…

React学习23(redux基本使用)

理解 1&#xff09;学习文档 英文文档&#xff1a;https://redux.js.org/ 中文文档&#xff1a;https://www.redux.org.cn/ github:https://github.com/react.js/redux 2&#xff09;redux是什么 redux是一个专门用于状态管理的JS库&#xff08;不是react插件库&#xff09; …

JavaScript中的4种for循环

这里介绍了4中for循环的方法。 注&#xff1a;这里不介绍do while循环。 普通for循环 这个应该是最常规的for循环了&#xff0c;按照数组下标遍历。 for (var i 0; i < 3; i) {console.log(i); }var arr [{"text":"text2","key":1},{&q…

IIS 使用 office365 SMTP relay

IIS上设置smtp 代理不是难事&#xff0c;但是如果使用office365就比较复杂点&#xff0c;弄不好会陷在里面。 一.office365 SMTP的选项 先了解一下office365对于smtp的三个选项&#xff0c;对应三张图及对比。 第一种方式&#xff0c;是使用office365的邮箱账号&#xff0c;通…

《小白WEB安全入门》02. 开发篇

开发篇初识HTML潜在漏洞初识CSS潜在漏洞初识JS潜在漏洞初识后端潜在漏洞后端能做什么后端种类后端框架潜在漏洞本系列文章只叙述一些超级基础理论知识&#xff0c;极少有实践部分 本文涉及到的语言需自行掌握 初识HTML潜在漏洞 HTML指的是超文本标记语言&#xff08;Hyper Tex…

math_基本导数公式@积分公式@部分推导

文章目录导数积分公式表&#x1f388;积分计算器pictures versionmarkdown Table version&#x1f388;&#x1f388;&#x1f388;&#x1f388;Notes补充几个积分公式的推导和记忆方法&#x1f388;x2a2x^2\pm{a^2}x2a2a2−x2\sqrt{a^2-{x^2}}a2−x2​x2−a2\sqrt{x^2-a^2}x2…

【C++天梯计划】1.13 广搜(BFS)(search widely)

文章目录什么是广搜?与深搜的对比实际应用例题1&#xff1a;快乐的马里奥题目描述输入输出样例代码1代码2例题2&#xff1a;迷宫出口题目描述输入输出样例思路代码&#x1f386;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;…

解释最小二乘法(最小平方法)?

Reference: https://blog.csdn.net/Rosie9/article/details/119717881 &#xff08;二乘 aa 平方&#xff09; 最小化误差平方和残差平方和最小&#xff0c;是一种数学优化技术。 问题&#xff1a;对于一元线性回归模型, 假设从总体中获取了n组观察值&#xff08;X1&#x…