当前位置: 首页 > 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.gsyq.cn/news/82881.html

相关文章:

  • 2025年中国十大工业隔音设备定制公司推荐:天然气压缩机隔音 - 工业推荐榜
  • 一搜百应GEO:从搜索优化到AI推荐,引领品牌营销新纪元 - 一搜百应
  • 2025武汉口碑好的离婚律师TOP5推荐:专业离婚律师咨询指 - 工业推荐榜
  • 2025年重庆输变电资质转让代办公司推荐:输变电资质转让选哪 - 工业品牌热点
  • 2025年杭州现代风装修公司权威推荐榜单:杭州日式风装修服务/杭州意式风极简装修/杭州中古风装修公司精选 - 品牌推荐官
  • 2025年中国十大防盗门售后服务公司推荐:日上防盗门厂家售后 - mypinpai
  • 2025年五大靠谱的湿热试验品牌企业排行榜,有名的湿热试验专 - 工业推荐榜
  • Spring IOC核心原理与实战技巧 - 指南
  • 2025年重庆输变电资质代办和转让公司TOP5排行榜,输变电 - 工业品牌热点
  • 国产手套箱用/氮吹用/液质联用/高纯氮气发生器推荐品牌厂家,哪家维修公司靠谱? - 品牌推荐大师1
  • 超强粘接力粘合剂推荐,助力建筑安全与耐久 - 博客万
  • 2025年上海保险法律师怎么选?5位专业律师拆解:从海上保险到涉外保险都适配 - 博客万
  • 2025年中国热喷涂正规厂家推荐:热喷涂供应商推荐怎么选? - mypinpai
  • 江苏南通重磅出炉香港留学中介机构排名前六出炉 - 留学品牌推荐官
  • 2025年山东和合化学有限公司深度解析:民族涂料品牌的技术实力与市场口碑 - 品牌推荐
  • journalctl save
  • Excel炒股法:猜大盘成交量
  • 2025年12月山东丙烯酸漆厂家推荐:山东地区生产企业综合实力排行榜与选购指南深度分析 - 品牌推荐
  • 2025年山东和合化学有限公司深度解析:民族涂料品牌的技术创新实力与行业口碑 - 品牌推荐
  • 2025年机场广告品牌推荐:口碑与效果兼具,电梯广告/电梯门贴广告/主流网络媒体/电梯视频广告/公交车身广告/电梯框架广告机场广告品牌选哪家 - 品牌推荐师
  • 12月11日
  • 多奢家居联系方式: 高端全屋定制服务选择要点及使用建议 - 品牌推荐
  • 西安雁塔区美世留学香港留学一站式办理中介机构 - 留学品牌推荐官
  • 差异化、弹性化与 AI 驱动:数据安全平台迈向泛在化的新阶段
  • 多奢家居 联系方式: 成都高净值人群家居定制服务对接指引 - 品牌推荐
  • Python3.x生成器yield表达式与__next__、send方法理解
  • 严选十大宁波香港留学中介机构排名整合出炉一览 - 留学品牌推荐官
  • AI与网络安全的较量:主动防御时代的策略与实践
  • 开友供应链订货分账系统
  • 2025年年终上海继承纠纷律师推荐:聚焦涉外资产与高净值传承,严选5款处理复杂案例的可靠性解析 - 品牌推荐