MapReduce——调用HDFS
MapReduce——调用HDFS
调用HDFS文件接口实现对分布式文件系统中文件的访问,如创建、修改、删除等。
实验代码
package mapreduce; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.Scanner; public class test01 { private static FileSystem fs; private static Scanner input=new Scanner(System.in); //获取文件系统 public static FileSystem init() throws URISyntaxException, IOException, InterruptedException { if(fs==null){ Configuration conf = new Configuration(); fs = FileSystem.get(new URI("hdfs://192.168.109.10:9000"),conf,"root"); } return fs; } //关闭资源 public void close() throws IOException { if(fs!=null){ fs.close(); } } //创建文件 public static void createFile(String path) throws IOException, URISyntaxException, InterruptedException { fs=init(); fs.create(new Path(path)); if(isExist(path)){ System.out.println("文件创建成功"); }else { System.out.println("文件创建失败"); } } //创建文件 public static void deleteFile(String path) throws IOException, URISyntaxException, InterruptedException { fs=init(); fs.delete(new Path(path),true); //可递归删除 if(!isExist(path)){ System.out.println("文件删除成功"); }else { System.out.println("文件删除失败"); } } //向终端展示文件内容 public static void showFile(String path) throws InterruptedException, IOException, URISyntaxException { fs=init(); FSDataInputStream in = fs.open(new Path(path)); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in)); String content = bufferedReader.readLine(); //读取文件一行 while (content!=null){ System.out.println(content); content=bufferedReader.readLine(); } bufferedReader.close(); in.close(); } //向已有文件追加内容 public static void appendFile(String path) throws IOException, URISyntaxException, InterruptedException { fs=init(); System.out.println("追加前"); showFile(path); System.out.println("请输入你想追加的内容"); String content = input.next(); FSDataOutputStream out = fs.append(new Path(path)); out.write(content.getBytes()); //默认追加在末尾 IOUtils.closeStream(out); System.out.println("追加后"); showFile(path); } //判断文件是否存在 public static boolean isExist(String path) throws IOException { return fs.exists(new Path(path)); } public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException { createFile("/wdy/test.txt"); //deleteFile("/wdy/test.txt"); //appendFile("/wdy/test.txt"); fs.close(); } }
创建文件
修改文件
删除文件