课堂测试——hdfs文件操作

课堂测试,主要进行hadoop的hdfs操作,只需要完成文件操作

题目要求:

测试一:

编程实现一个简单的文本编辑器,主要包括以下功能:

1、创建一个自己姓名首字母的文件夹;

2、在该文件夹下创建一个hdfstest1.txt文件,向文件内输入“班级学号姓名HDFS课堂测试”的文字内容;

3、在文件加下再创建一个hdfstest2.txt文件,并将hdfstest1文件的内容写到该文件中,并将hdfstest2的内容输出。

测试二:

编程实现一个简单的文本编辑器,主要包括以下功能:

(1) 新建:新建文本文件;

(2) 打开:打开指定目录下的文本文件,并将文本内容显示在编辑区;

(3) 编辑:向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;

(4) 保存:可以将编辑后的文件保存到指定的目录中。

为了省事,我直接在test中进行测试类运行,这个控制台只能readonly

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.Scanner;

public class HdfsTest {
    private FileSystem fs;

    @Before
    public void init(){
        //           连接集群namenode地址
        URI uri = null;
        try {
            uri = new URI("hdfs://hadoop102:8020");
            //            创建配置文件
            Configuration configuration = new Configuration();
            configuration.set("dfs.replication","2");
//            获取到客户端对象
            fs = FileSystem.get(uri, configuration,"jzz");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @After
    public void destory(){
        try {
            fs.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //创建目录
    @Test
    public void testmkdir(){
        try {
//            创建文件夹
            fs.mkdirs(new Path("/Jzz"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //写入文件
    @Test
    public void testWrite(){
        try{
            Path file1 = new Path("/Jzz/hdfstest5.txt");
            FSDataOutputStream fsDataOutputStream = fs.create(file1);
            fsDataOutputStream.writeUTF("信2005-3 20204177 贾梓钊HDFS课堂测试");
            fsDataOutputStream.flush();
            fsDataOutputStream.close();

        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Test
    public void testWrite2(){
        try{
            Path inFile = new Path("/Jzz/hdfstest1.txt");
            Path newFile = new Path("/Jzz/hdfstest3.txt");

            FSDataOutputStream outputStream = fs.create(newFile);
            FSDataInputStream inputStream = fs.open(inFile);
            String str = inputStream.readUTF();
            inputStream.close();
            outputStream.writeUTF(str);
            outputStream.flush();
            outputStream.close();

            inputStream = fs.open(newFile);
            System.out.println(inputStream.readUTF());


        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

以后就是测试1的代码

下面是测试二的文本编辑器

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 java.io.IOException;
import java.net.URI;
import java.util.Scanner;
public class HdfsTest {
private static FileSystem fs;
public static void main(String[] args) {
init();
//
        testRm();
}public static void init(){
//           连接集群namenode地址
URI uri = null;
try {
uri = new URI("hdfs://hadoop102:8020");
//            创建配置文件
Configuration configuration = new Configuration();
configuration.set("dfs.replication","2");
//            获取到客户端对象
fs = FileSystem.get(uri, configuration,"jzz");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testWrite2(){
try{
Path inFile = new Path("/Jzz/hdfstest1.txt");
Path newFile = new Path("/Jzz/hdfstest6.txt");
FSDataOutputStream outputStream = fs.create(newFile);
FSDataInputStream inputStream = fs.open(inFile);
String str = inputStream.readUTF();
inputStream.close();
outputStream.writeUTF(str);
outputStream.flush();
outputStream.close();
inputStream = fs.open(newFile);
System.out.println(inputStream.readUTF());
}catch (Exception e){
e.printStackTrace();
}
}
public static void testWrite(){
try{
Path file1 = new Path("/Jzz/hdfstest5.txt");
FSDataOutputStream fsDataOutputStream = fs.create(file1);
fsDataOutputStream.writeUTF("信2005-3 20204177 贾梓钊HDFS课堂测试");
fsDataOutputStream.flush();
fsDataOutputStream.close();
}catch (Exception e){
e.printStackTrace();
}
}
public static void testEditor() {
Scanner scanner = new Scanner(System.in);
System.out.println("请选择你需要的功能:1、新建文本文件;2、查看文件信息;3、追加文件信息;");
int num = scanner.nextInt();
try {
switch (num) {
case 1:
System.out.print("请输入文件路径:");
String path = scanner.next();
System.out.print("请输入文件信息:");
String edit = scanner.next();
Path path1 = new Path(path);
FSDataOutputStream fsDataOutputStream = fs.create(path1);
fsDataOutputStream.writeUTF(edit);
fsDataOutputStream.flush();
fsDataOutputStream.close();
break;
case 2:
System.out.print("请输入文件路径:");
String readpath = scanner.next();
Path path2 = new Path(readpath);
FSDataInputStream fsDataInputStream = fs.open(path2);
System.out.println(fsDataInputStream.readUTF());
break;
case 3:
System.out.print("请输入文件路径:");
String appPath = scanner.next();
System.out.print("输入追加信息:");
String appendText = scanner.next();
FSDataOutputStream append = fs.append(new Path(appPath));
append.writeUTF(appendText);
System.out.println("追加成功");
break;
default:
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

你可能想看:
标签: 油腻
分享给朋友: