当前位置: 首页 > news >正文

实验2 熟悉常用的HDFS操作

(二)编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。

# 进入工作目录
cd /home/hadoop/java_code# 1. 删除旧文件
rm -f MyFSDataInputStream.java MyFSDataInputStream.class# 2. 创建修正后的Java文件并编译运行
cat > MyFSDataInputStream.java << 'EOF'
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import java.io.*;public class MyFSDataInputStream extends FSDataInputStream {private BufferedReader reader;public MyFSDataInputStream(FSDataInputStream in) {super(in.getWrappedStream());try {this.reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));} catch (UnsupportedEncodingException e) {throw new RuntimeException("UTF-8编码不受支持", e);}}// 修改方法名为 readNextLine()public String readNextLine() throws IOException {return reader.readLine();}@Overridepublic void close() throws IOException {if (reader != null) {reader.close();}super.close();}public static void main(String[] args) {try {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://master:8020");FileSystem fs = FileSystem.get(conf);Path filePath = new Path("/user/hadoop/test/file1.txt");if (!fs.exists(filePath)) {System.err.println("错误:HDFS文件不存在 - " + filePath);return;}FSDataInputStream fsIn = fs.open(filePath);MyFSDataInputStream myInputStream = new MyFSDataInputStream(fsIn);System.out.println("===== 开始读取文件内容 =====");String line;int lineNumber = 1;// 使用新方法名while ((line = myInputStream.readNextLine()) != null) {System.out.printf("第 %d 行: %s%n", lineNumber++, line);}System.out.println("===== 文件读取完成 =====");System.out.printf("总共 %d 行%n", lineNumber - 1);myInputStream.close();fs.close();} catch (IOException e) {System.err.println("操作失败: " + e.getMessage());e.printStackTrace();}}
}
EOF# 3. 编译(如果失败会显示错误,成功则无输出)
javac -cp $(hadoop classpath) MyFSDataInputStream.java#4.运行
java -cp $(hadoop classpath):. MyFSDataInputStream

image

(三)查看Java帮助手册或其它资料,用“java.net.URL”和“org.apache.hadoop.fs.FsURLStreamHandlerFactory”编程完成输出HDFS中指定文件的文本到终端中。

# 1. 进入工作目录
cd /home/hadoop/java_code# 2. 删除旧文件(如有)
rm -f HdfsUrlReader.java HdfsUrlReader.class# 3. 一键写入新源码
cat > HdfsUrlReader.java << 'EOF'import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;public class HdfsUrlReader {public static void main(String[] args) throws Exception {/* 注册 hdfs:// 协议处理器 */URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());/* 目标文件 URL */String hdfsUrl = "hdfs://master:8020/user/hadoop/file1.txt";URL    url     = new URL(hdfsUrl);/* 打开流并逐行读取 */try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {System.out.println("===== 通过 URL 读取 HDFS 文件 =====");String line;int lineNo = 1;while ((line = reader.readLine()) != null) {System.out.printf("第 %d 行: %s%n", lineNo++, line);}System.out.println("===== 读取完成 =====");}}
}
EOF# 4. 编译
javac -cp $(hadoop classpath) HdfsUrlReader.java# 5. 运行
java -cp $(hadoop classpath):. com.mwh.HdfsUrlReader

image

http://www.jsqmd.com/news/72366/

相关文章:

  • 2025年中国十大工业隔音设备定制公司推荐:天然气压缩机隔音 - 工业推荐榜
  • 全网热议!2025年国内测温仪厂家品牌排行榜 - 讯息观点
  • 2025年设备隔音房/瓦楞机隔音房/打磨机隔音房厂家推荐TO - 工业品牌热点
  • 2025年终色膏厂家推荐:色浆/油性色膏/水性色浆/颜料浆优选品牌 - 深度智识库
  • 2025年电动双开门结构静音房厂家推荐,专业静音室、静音房企 - 工业推荐榜
  • 一搜百应GEO:从搜索优化到AI推荐,引领品牌营销新纪元 - 一搜百应
  • 2025年浙江新时沏茶饮创业服务权威榜单:新时沏奶茶加盟服务/新时沏奶茶创业服务/新时沏中式茶饮加盟综合推荐 - 品牌推荐官
  • 无需进口!国产推荐真空匀质机、真空混合机、真空自转公转搅拌机 - 品牌推荐大师1
  • 2025年北京天津防盗门售后公司排名,群升防盗门售后推荐全解 - myqiye
  • 2025年轨道交通技校口碑排名:五大轨道交通类院校招生专业全 - mypinpai
  • 2025武汉口碑好的离婚律师TOP5推荐:专业离婚律师咨询指 - 工业推荐榜
  • 2025年重庆输变电资质转让代办公司推荐:输变电资质转让选哪 - 工业品牌热点
  • LLM学习路线
  • 新能源小型电池模块测试效率提升方案:上海柏毅试验箱技术解析
  • 二分环 / 浏览器 /更新 图标的画法
  • tmux 使用方法
  • 2025年选购指南:综合实力最强的检测仪公司排行,高强回弹仪检定器/红外分光光度计/微型十字板仪/数显砂浆回弹仪/钢砧检测仪销售厂家推荐排行 - 品牌推荐师
  • 国产手套箱用/氮吹用/液质联用/高纯氮气发生器推荐品牌厂家,哪家维修公司靠谱? - 品牌推荐大师1
  • 2025年杭州现代风装修公司权威推荐榜单:杭州日式风装修服务/杭州意式风极简装修/杭州中古风装修公司精选 - 品牌推荐官
  • 传统园艺巨头如何用AI节省1.5亿美元
  • 2025年口碑好的抗污染反渗透膜热门厂家推荐榜单 - 行业平台推荐
  • 告别 “孩子看牙难”!2025年长沙 5 家权威儿童牙科/口腔医院盘点,家长直接抄作业 - 博客万
  • 告别 “孩子看牙难”!2025年长沙 5 家权威儿童牙科/口腔医院盘点,家长直接抄作业 - 博客万
  • 2025年中东地区EOR名义雇主服务商推荐:聚焦Safeguard Global人力资源服务商 - 品牌2025
  • 国产数据库迁移选型指南:金仓如何在兼容性与性能上实现突破?
  • 离心风机公司排行榜top1!离心风机哪个品牌好? - 博客万
  • 阿里云CentOS环境下Docker运用教程
  • 【C/C++】高斯列主元消元法求解线性方程组
  • 2025国民防盗门品牌TOP5权威推荐:群升防盗门,安全守护 - myqiye
  • 2025年美国名义雇主EOR公司推荐,Safeguard Global服务特点全面解读 - 品牌2025