实验3-熟悉常用的HDFS操作-答案

实验2 熟悉常用的HDFS操作实验手册

(3) 将HDFS中指定文件的内容输出到终端中; Shell命令: ./hdfs dfs -cat text.txt Java代码: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.io.*; public class HDFSApi { /** * 读取文件内容 */ public static void cat(Configuration conf, String remoteFilePath) throws IOException { FileSystem fs = FileSystem.get(conf); Path remotePath = new Path(remoteFilePath); FSDataInputStream in = fs.open(remotePath); BufferedReader d = new BufferedReader(new InputStreamReader(in)); String line = null; while ( (line = d.readLine()) != null ) { System.out.println(line); } d.close(); in.close(); fs.close(); }

主讲教师:刘斌 第6页

实验2 熟悉常用的HDFS操作实验手册

/** * 主函数 */ public static void main(String[] args) { Configuration conf = new Configuration(); conf.set(\ String remoteFilePath = \ // HDFS路径 try { System.out.println(\读取文件: \ HDFSApi.cat(conf, remoteFilePath); System.out.println(\读取完成\ } catch (Exception e) { e.printStackTrace(); } } }

(4) 显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息; Shell命令: ./hdfs dfs -ls -h text.txt Java代码: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.io.*;

主讲教师:刘斌 第7页

实验2 熟悉常用的HDFS操作实验手册

import java.text.SimpleDateFormat; public class HDFSApi { /** * 显示指定文件的信息 */ public static void ls(Configuration conf, String remoteFilePath) throws IOException { FileSystem fs = FileSystem.get(conf); Path remotePath = new Path(remoteFilePath); FileStatus[] fileStatuses = fs.listStatus(remotePath); for (FileStatus s : fileStatuses) { System.out.println(\路径: \ System.out.println(\权限: \ System.out.println(\大小: \ /* 返回的是时间戳,转化为时间日期格式 */ Long timeStamp = s.getModificationTime(); SimpleDateFormat format = new SimpleDateFormat(\ String date = format.format(timeStamp); System.out.println(\时间: \ } fs.close(); } /** * 主函数 */ public static void main(String[] args) { Configuration conf = new Configuration(); conf.set(\ String remoteFilePath = \ // HDFS路径 try { System.out.println(\读取文件信息: \ HDFSApi.ls(conf, remoteFilePath); System.out.println(\读取完成\ } catch (Exception e) { e.printStackTrace(); } } } 主讲教师:刘斌 第8页

实验2 熟悉常用的HDFS操作实验手册

(5) 给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建

时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息; Shell命令: ./hdfs dfs -ls -R -h /user/hadoop Java代码: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.io.*; import java.text.SimpleDateFormat; public class HDFSApi { /** * 显示指定文件夹下所有文件的信息(递归) */ public static void lsDir(Configuration conf, String remoteDir) throws IOException { FileSystem fs = FileSystem.get(conf); Path dirPath = new Path(remoteDir); /* 递归获取目录下的所有文件 */ RemoteIterator remoteIterator = fs.listFiles(dirPath, true); /* 输出每个文件的信息 */ while (remoteIterator.hasNext()) { FileStatus s = remoteIterator.next(); System.out.println(\路径: \ System.out.println(\权限: \

主讲教师:刘斌 第9页

实验2 熟悉常用的HDFS操作实验手册

System.out.println(\大小: \ /* 返回的是时间戳,转化为时间日期格式 */ Long timeStamp = s.getModificationTime(); SimpleDateFormat format = new SimpleDateFormat(\ String date = format.format(timeStamp); System.out.println(\时间: \ System.out.println(); } fs.close(); } /** * 主函数 */ public static void main(String[] args) { Configuration conf = new Configuration(); conf.set(\ String remoteDir = \ // HDFS路径 try { System.out.println(\递归)读取目录下所有文件的信息: \ HDFSApi.lsDir(conf, remoteDir); System.out.println(\读取完成\ } catch (Exception e) { e.printStackTrace(); } } } 主讲教师:刘斌 第10页

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4