Hadoop Java API操作 及读取序列化文件(04-05-06)

    针对于04-05-06班级整合。

1.创建java项目

2.修改pom.xml文件

添加依赖

<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency>
</dependencies>

3.创建一个名为HdfsTest类,在类中编写单元测试代码测试API中的每个方法

(1)查看HDFS根目录下的文件或子目录,并将名称打印在控制台

//单元测试  每个操作放在一个测试方法中,  选中方法名---》右击  运行testList()
@Test
public void testList() throws Exception{//1.创建配置对象Configuration conf = new Configuration();//2.获取文件系统对象  yt启动集群的用户名// FileSystem fs = FileSystem.get(conf);FileSystem fs = FileSystem.get(new URI("hdfs://master:8020") ,conf,"yt");//3.获取HDFS根目录下的子目录和文件FileStatus  []files =fs.listStatus( new Path("/"));//4.循环所有的filesfor(FileStatus f:files){//判断是文件还是目录if(f.isFile()){System.out.println(  "f:  "+f.getPath().getName() );}else {System.out.println(" d:    "+f.getPath().getName());}}//关闭资源fs.close();}

控制台输出的结果:

(2)创建目录

//创建目录
@Test
public void testMkdirs() throws Exception{//1.创建配置对象Configuration conf = new Configuration();//2.获取文件系统对象  yt启动集群的用户名FileSystem fs = FileSystem.get(new URI("hdfs://master:8020") ,conf,"yt");fs.mkdirs(new Path("/hdfs/2306"));//关闭资源fs.close();}

测试结果:

(3)删除非空目录

//删除文件或目录
@Test
public void testDelete() throws Exception{//1.创建配置对象Configuration conf = new Configuration();//2.获取文件系统对象  yt启动集群的用户名FileSystem fs = FileSystem.get(new URI("hdfs://master:8020") ,conf,"yt");fs.delete(new Path("/output-2302-order"),true);//关闭资源fs.close();}

(4)文件上传

//文件上传
@Test
public void testCopyFromLocalFile() throws Exception{//1.创建配置对象Configuration conf = new Configuration();//2.获取文件系统对象  yt启动集群的用户名FileSystem fs = FileSystem.get(new URI("hdfs://master:8020") ,conf,"yt");fs.copyFromLocalFile(new Path("D:\\software\\apache-maven-3.8.6.rar"),new Path("/hdfs/2306/"));//关闭资源fs.close();}

(5)文件下载

//文件下载
@Test
public void testCopyToLocalFile() throws Exception{//1.创建配置对象Configuration conf = new Configuration();//2.获取文件系统对象  yt启动集群的用户名FileSystem fs = FileSystem.get(new URI("hdfs://master:8020") ,conf,"yt");fs.copyToLocalFile(new Path("/bigdata/order.txt"),new Path("D:\\software\\"));//关闭资源fs.close();}

(6)读取HDFS上的序列化文件,将数据保存到D:\\software\\raceData.txt

//读取序列化文件中的数据保存到本次磁盘
@Test
public void testSequenceFileRead() throws Exception{//1.创建配置对象Configuration conf = new Configuration();//2.获取文件系统对象  yt启动集群的用户名FileSystem fs = FileSystem.get(new URI("hdfs://master:8020") ,conf,"yt");SequenceFile.Reader reader = new SequenceFile.Reader(fs,new Path("/ouput-2301-select/part-m-00000"),conf);//创建文件对象File file = new File("D:\\software\\raceData.txt");//创建字节流对象OutputStream  out = new FileOutputStream(file);//创建缓冲字符输出流对象BufferedWriter  bw =new BufferedWriter( new OutputStreamWriter(out) );Text key =new Text();Text val =new Text();while(  reader.next(key,val)   ){bw.write(  key.toString()+"\t" +val.toString()  );bw.newLine();}bw.flush();//关闭资源bw.close();out.close();fs.close();}

代码中的part-m-0000文件,需要完成 --筛选日志并生成序列化文件
           https://blog.csdn.net/lydia88/article/details/138184788

才能得到日志化文件。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ:新增consumer消费组group从最新消息开始消费skip last offset message

场景 想创建一个新的consumer去消费一个已经再使用的topic时&#xff0c;默认情况下会从topic中的第一条消息开始消费&#xff0c;大多数情况是需要从最新的消息开始。然后再使用CONSUME_FROM_LAST_OFFSET设置时并不会对新的consumer生效&#xff0c;它只是在停用consumer重新启…

【MySQL】表的增删改查 | CRUD | 新增 | 查询 | 修改 | 删除 | 数据库约束

文章目录 表的增删改查一、CRUD1.新增&#xff08;Create&#xff09;1.插入多行2.指定列多行插入3.插入datetime类型4.插入当前时间5.插入查询的结果 2.查询&#xff08;Retrieve&#xff09;1.全列查询 *2.指定列查询3.查询字段为表达式4.指定别名 as5.去重 distinct6.排序 o…

算法分析与设计复习__递归方程与分治

总结自&#xff1a;【算法设计与分析】期末考试突击课_哔哩哔哩_bilibili 1.递归&#xff0c;递归方程 1.1递归条件: 1.一个问题的解可以分解为几个子问题的解&#xff1b; 2.这个问题与分解之后的子问题&#xff0c;除了数据规模不同&#xff0c;求解思路完全一样; 3.存在…

Python从0到100(二十四):正则表达式的应用

正则表达式是一种用于字符串搜索和操作的强大工具&#xff0c;它允许你使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在编程中&#xff0c;正则表达式被广泛应用于文本处理&#xff0c;如模式搜索、文本替换、字符串验证等。 1.正则表达式基础 正则表达式由一…

Edge(微软)——一款充满创新精神的浏览器

随着科技的不断进步&#xff0c;互联网浏览器已经成为我们日常生活中不可或缺的工具。在这个领域&#xff0c;微软Edge作为一款新型的浏览器&#xff0c;凭借其独特的功能和优秀的性能&#xff0c;逐渐在市场上占据了一席之地。本文将深入探索微软Edge的特点、优势以及它如何改…

【MySQL 数据宝典】【事务锁】- 002 事务控制的演进

一、事务处理思路 1.1 排队 排队处理是事务管理最简单的方法&#xff0c;就是完全顺序执行所有事务的数据库操作&#xff0c;不需要加锁&#xff0c;简单的说就是全局排队。序列化执行所有的事务单元&#xff0c;数据库某个时刻只处理一个事务操作&#xff0c;特点是强一致性…

测缝计测量的是实际缝宽吗?

在土木工程中&#xff0c;测缝计作为一种重要的监测工具&#xff0c;广泛应用于桥梁、隧道、大坝等大型结构中&#xff0c;用以测量和监控结构接缝或裂缝的实际宽度变化。然而&#xff0c;有些人可能会产生疑问&#xff1a;测缝计测量的是实际缝宽吗?本文将对这一问题进行深入…

六西格玛管理培训对企业有哪些实际帮助?

当下&#xff0c;企业要想脱颖而出&#xff0c;不仅要有创新思维和敏锐的市场洞察力&#xff0c;更要有高效的管理体系和严谨的质量控制手段。而六西格玛管理培训正是这样一项能够帮助企业实现提质增效、提升竞争力的关键举措。那么&#xff0c;六西格玛管理培训对企业究竟有哪…

亲子失和最大的内耗是:家长总是“说硬话,办软事”!

一声爸妈&#xff0c;一辈子的责任&#xff0c;操不完的心、做不完的事。 然而&#xff0c;爱太满&#xff0c;注定会溢出。爱有边界&#xff0c;我们是父母&#xff0c;更是自己&#xff01; 01 前些时候悠悠起床又开始混账了&#xff01; 气愤的是&#xff0c;周末休息那…

MES系统在电线电缆行业生产上的应用

MES系统在线缆行业的应用可以带来多重价值&#xff0c;包括提高生产效率、降低生产成本、提高产品质量、优化库存管理、改善生产环境和提高企业竞争力等方面。因此&#xff0c;在电线电缆行业中广泛应用MES系统可以提高企业的经济效益和社会效益&#xff0c;推动企业发展和行业…

平芯微PW4056HH中文规格书

概述 PW4056HH 是一款完整的采用恒定电流/恒定电压的高压、大电流、单节锂离子电池线性充电 IC。充电电流可达 1A。输入 MAX 低工作电压 3.75V&#xff0c;降低充电功耗&#xff0c;提高效率。 PW4056HH 采用了内部 PMOS 架构&#xff0c;加上防反充电路&#xff0c;不需要外部…

Lumina-T2X 一个使用 DiT 架构的内容生成模型,可通过文本生成图像、视频、多视角 3D 对象和音频剪辑。

Lumina-T2X 是一个新的内容生成系列模型&#xff0c;统一使用 DiT 架构。通过文本生成图像、视频、多视角 3D 对象和音频剪辑。 可以在大幅提高生成质量的前提下大幅减少训练成本&#xff0c;而且同一个架构支持不同的内容生成。图像质量相当不错。 由 50 亿参数的 Flag-DiT …