实验3-熟悉常用的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 remote) throws IOException { fs = (conf); Path remotePath = new Path(remote); 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(); } /** * 主函数 */ public static void main(String[] args) { Configuration conf = new Configuration(); conf.set(\ String remote = \ // HDFS路径 try { System.out.println(\读取文件: \ HDFSApi.cat(conf, remote); 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.*; import java.text.SimpleDateFormat; public class HDFSApi { /** * 显示指定文件的信息 */ public static void ls(Configuration conf, String remote) throws IOException { fs = (conf); Path remotePath = new Path(remote); [] = fs.listStatus(remotePath); for ( s : ) { 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 remote = \ // HDFS路径 try { System.out.println(\读取文件信息: \ HDFSApi.ls(conf, remote); System.out.println(\读取完成\ } catch (Exception e) { e.printStackTrace(); } } }

(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 { fs = (conf); Path dirPath = new Path(remoteDir); /* 递归获取目录下的所有文件 */ RemoteIterator remoteIterator = fs.listFiles(dirPath, true); /* 输出每个文件的信息 */ while (remoteIterator.hasNext()) { s = remoteIterator.next(); 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(\时间: \ 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(); } } }

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