大数据学习--使用Java API访问HDFS

news2024/11/27 14:52:40

Java API访问HDFS

  • 编写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/88528.html

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

相关文章

react的jsx和React.createElement是什么关系?面试常问

1、JSX 在React17之前&#xff0c;我们写React代码的时候都会去引入React&#xff0c;并且自己的代码中没有用到&#xff0c;这是为什么呢&#xff1f; 这是因为我们的 JSX 代码会被 Babel 编译为 React.createElement&#xff0c;我们来看一下babel的表示形式。 需要注意的是…

Kotlin 原生拓展函数与非拓展函数

先看一下图文 根据定义的性质可分为两类 非拓展函数 repeat 循环函数,可使用该函数执行一些有限循环任务,务必在构造函数传入循环次数 repeat(repeatNumber:Int 1) with 条件补充区域,可在某些需要两个或者多个函数对象直接的属性进行依赖操作时使用 …

Python 读取图像方式总结

读取并显示图像 opencv3库scikit-image库PIL库读取图像结果分析 打印图像信息 skimage获取图像信息PIL获取图像信息 读取并显示图像方法总结 PIL库读取图像Opencv3读取图像scikit-image库读取图像参考资料 学习数字图像处理&#xff0c;第一步就是读取图像。这里我总结下如何…

深度学习——CPU,GPU,TPU等硬件说明(笔记)

目录 深度学习硬件&#xff1a;CPU和GPU 深度学习硬件&#xff1a;TPU 深度学习硬件&#xff1a;CPU和GPU 1.提升CPU的利用率Ⅰ&#xff1a;提升空间和时间的内存本地性 ①在计算ab之前&#xff0c;需要准备数据 主内存->L3->L2->L1->寄存器 L1&#xff1a;访…

【LeetCode每日一题:1697. 检查边长度限制的路径是否存在~~~并查集+数组排序+排序记录下标位置】

题目描述 给你一个 n 个点组成的无向图边集 edgeList &#xff0c;其中 edgeList[i] [ui, vi, disi] 表示点 ui 和点 vi 之间有一条长度为 disi 的边。请注意&#xff0c;两个点之间可能有 超过一条边 。 给你一个查询数组queries &#xff0c;其中 queries[j] [pj, qj, li…

抖音商家引流的正确方法,抖音商家引流脚本实操教程。

大家好我是你们的小编一辞脚本&#xff0c;今天给大家分享新的知识&#xff0c;很开心可以在CSDN平台分享知识给大家,很多伙伴看不到代码我先录制一下视频 在给大家做代码&#xff0c;给大家分享一下抖音商家引流脚本的知识和视频演示 不懂的小伙伴可以认真看一下&#xff0c…

【lssvm回归预测】基于遗传算法优化最小二乘支持向量机GA-lssvm实现数据回归预测附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

图书商城小程序开发,实现图书便捷式选购

1995年联合国教文组织将4月23日规定为世界读书日&#xff0c;由此可见对全世界人民来说读书都是一件很重要的事。并且据调查数据显示&#xff0c;去年我国成年国民图书阅读量达到了59.7%&#xff0c;同比增长了0.2个百分点&#xff1b;人均纸质图书阅读量为4.76&#xff0c;较上…

记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知

问题背景 需求背景 需求&#xff1a;对商品的上架与下架进行管控&#xff0c;下架的商品不能进行销售 上架与下架的管控&#xff0c;在我负责的项目&#xff08;单据系统&#xff09;中实现&#xff1b;销售的控制则是在另外一个项目&#xff08;POS系统&#xff09;中实现的…

人工智能课后作业_python实现广度优先遍历搜索(BFS)(附源码)

2 广度优先遍历搜索(BFS) 2.1算法介绍2.2实验代码2.3实验结果2.4实验总结 2.1算法介绍 广度优先搜索算法&#xff08;英语&#xff1a;Breadth-First-Search&#xff0c;缩写为BFS&#xff09;&#xff0c;是一种图形搜索算法。简单的说&#xff0c;BFS是从根节点开始&#…

MATLAB动态导入文件功能(txt文件读入)

目录 一、界面搭建 1.axes坐标轴 2.LIST表 3.button按钮 二、属性 三、代码实现 一、界面搭建 1.axes坐标轴 需要有一个可以显示点的axes&#xff0c;以及一个展示点坐标XYZ的LIST表控件 2.LIST表 LIST需要添加表头&#xff0c;XYZ&#xff0c;行1,2,3,4,.. 右键列表…

降本增效: 蚂蚁在 Sidecarless 的探索和实践

文&#xff5c;王发康 &#xff08;花名&#xff1a;毅松 &#xff09; 蚂蚁集团技术专家、MOSN 项目核心开发者 深耕于高性能网络服务器研发&#xff0c;目前专注于云原生 ServiceMesh、Nginx、MOSN、Envoy、Istio 等相关领域。 本文 5574 字 阅读 14 分钟 前言 从单体到分…

三、数据链路层(二)封装成帧和透明传输

目录 2.1字符计数法 2.2字符填充的首尾定界符法 2.3零比特填充的首尾标志法 2.4违规编码法 组帧就是一段数据的前后分别添加首部和尾部&#xff0c;确定帧的界限。 组帧的目的是解决帧定界、帧同步&#xff08;接收方应能从接收到的二进制比特流中区分出帧的起始和终止&am…

java计算机毕业设计ssm智能交通信息管理平台6w258(附源码、数据库)

java计算机毕业设计ssm智能交通信息管理平台6w258&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

气象数据相关分析及使用系列:基于CALMET诊断模型的高时空分辨率精细化风场模拟

【查看原文】气象数据相关分析及使用系列&#xff1a;基于CALMET诊断模型的高时空分辨率精细化风场模拟技术应用​​​​​​ 在研究流场时&#xff0c;常用观测、模型风洞测试和数值模拟方法进行研究。但时常遇到研究区气象站点分布稀疏&#xff0c;不能代表周边复杂地形的风场…

PHP session相关知识详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是PHP session相关知识详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未…

JavaScript 版文章自动创建目录导航菜单控件源代码,用来生成文章导航,可生成独立的侧边栏导航菜单

特点 支持 UMD 规范&#xff1b;拥有 AnchorJS 基础功能&#xff1b;支持中文和英文标题文字生成ID&#xff1b;支持生成独立的侧边栏导航菜单&#xff1b;支持直接在文章中生成文章导读导航&#xff1b;自动分析标题关系&#xff0c;生成段落层级索引值&#xff1b;可以作为 …

试着开发一个Pagination组件

1 组件需求和模块设计 我们要实现的分页组件大致效果如下&#xff1a; 组件需求 点击左右分页按钮可以跳转到上一页/下一页&#xff1b;点击中间的页码按钮可以跳转到相应的页码&#xff1b;首页尾页需要始终显示出来&#xff08;如果只有1页则不显示尾页&#xff09;&#x…

数字孪生助力油气管道行业实现资产管理

随着数字孪生技术的发展日臻成熟&#xff0c;各个行业领域都在经历一场翻天覆地的变化。结合国内的油气管网系统建设现状&#xff0c;数字孪生技术对油气管道行业数智化建设必将有重大而深远的意义。 数字孪生助力油气管道行业实现资产管理 北京智汇云舟科技有限公司成立于201…

【发表案例】2/3区计算机视觉类SCI,3个月19天录用

2/3区计算机视觉类SCI 【期刊简介】IF:2.5-3.0&#xff0c;JCR2/3区&#xff0c;中科院4区 【检索情况】SCI 在检&#xff0c;正刊 【征稿领域】面向智能交通应用的物联网驱动计算机视觉技术 录用案例&#xff1a;3个月19天录用 2022.12.05 | Accepted 2022.11.17 | Edit…