Hadoop javaAPI

1、读

package com.sdnware.start01.hadoop;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class HDFSRead {

    public static void main(String[] args) {
        read1();
    }

    public static void read0(){
        System.setProperty("hadoop.home.dir", "D:/soft/hadoop-2.6.0");
        System.setProperty("HADOOP_USER_NAME","root");//制定上传的用户
        Configuration conf = new Configuration();
        try {
            FileSystem hdfs = FileSystem.get(new URI("hdfs://f1:9000"), conf);
            InputStream in = hdfs.open(new Path("/user/wordcount/My Father0.txt"));

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            IOUtils.copyBytes(in, out, 4096,true);
            String str = out.toString();
            System.out.println(str);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    public static void read1(){
        System.setProperty("hadoop.home.dir", "D:/soft/hadoop-2.6.0");
        System.setProperty("HADOOP_USER_NAME","root");//制定上传的用户
        Configuration conf = new Configuration();
        try {
            final FileSystem hdfs = FileSystem.get(new URI("hdfs://f1:9000"), conf);
            Path path = new Path("/user/wordcount");
            if(hdfs.exists(path)){
                List<FileStatus> listStatus = Arrays.asList(hdfs.listStatus(path));
                listStatus.forEach(new Consumer<FileStatus>() {
                    public void accept(FileStatus t) {
                        if(t.isFile()){
                            FSDataInputStream in = null;
                            try {
                                Path path2 = t.getPath();
                                in = hdfs.open(path2);
                                System.out.println("Read File:"+ path2.getName());
                                ByteArrayOutputStream out = new ByteArrayOutputStream();
                                IOUtils.copyBytes(in, out, 4096,true);
                                String str = out.toString();
                                System.out.println(str);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }finally{
                                IOUtils.closeStream(in);
                            }
                        }
                    }
                });
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }


}

2、写

package com.sdnware.start01.hadoop;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSWrite {

    public static void main(String[] args) {
        HDFSWrite writer = new HDFSWrite();
        writer.writer1();
    }

    public void writer0() {

        FSDataOutputStream out = null;
        FSDataInputStream in = null;

        try {
            System.setProperty("hadoop.home.dir", "D:/soft/hadoop-2.6.0");

            Configuration conf = new Configuration();
            FileSystem hdfs = FileSystem.get(new URI("hdfs://f1:9000"), conf);
            FileSystem local = FileSystem.getLocal(conf);

            Path inputDir = new Path("D:/testfile/"); // 获取本地待被上传的文件
                                                        // 会把该文件夹下的内容都上传
            Path hdfsFile = new Path("/user/wordcount"); // 获取hdfs上需要获取文件的地址
            hdfs.mkdirs(hdfsFile); // 在hdfs上新建该文件夹
            FileStatus[] inputFiles = local.listStatus(inputDir); // 获取本地待上传文件夹的信息


            for (int i = 0; i < inputFiles.length; i++) { // i循环本地文件夹内的文件个数
                System.out.println(inputFiles[i].getPath().getName());
                in = local.open(inputFiles[i].getPath()); // 获取输入流
                out = hdfs.create(new Path("/user/wordcount/" + inputFiles[i].getPath().getName())); // 输出流位置获取
                byte buffer[] = new byte[256];
                int bytesRead = 0;
                while ((bytesRead = in.read(buffer)) > 0) { // 每次读取buffer大小的部分
                    out.write(buffer, 0, bytesRead); // 每次写入buffer中bytesRead大小的部分
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }finally{
            IOUtils.closeQuietly(in);
            IOUtils.closeQuietly(out);
        }
    }


    public void writer1() {

        FSDataOutputStream out = null;
        FSDataInputStream in = null;

        try {
            System.setProperty("hadoop.home.dir", "D:/soft/hadoop-2.6.0");
            System.setProperty("HADOOP_USER_NAME","root");//制定上传的用户
            Configuration conf = new Configuration();
            FileSystem hdfs = FileSystem.get(new URI("hdfs://f1:9000"), conf);
            FileSystem local = FileSystem.getLocal(conf);

            Path inputDir = new Path("D:/testfile/"); // 获取本地待被上传的文件
                                                        // 会把该文件夹下的内容都上传
            Path hdfsFile = new Path("/user/wordcount"); // 获取hdfs上需要获取文件的地址
            hdfs.mkdirs(hdfsFile); // 在hdfs上新建该文件夹
            FileStatus[] inputFiles = local.listStatus(inputDir); // 获取本地待上传文件夹的信息


            for (int i = 0; i < inputFiles.length; i++) { // i循环本地文件夹内的文件个数
                System.out.println(inputFiles[i].getPath().getName());
                in = local.open(inputFiles[i].getPath()); // 获取输入流
                out = hdfs.create(new Path("/user/wordcount/" + inputFiles[i].getPath().getName())); // 输出流位置获取
                org.apache.hadoop.io.IOUtils.copyBytes(in, out, 4096,true);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }finally{
            org.apache.hadoop.io.IOUtils.closeStream(in);
            org.apache.hadoop.io.IOUtils.closeStream(out);
        }
    }

}

3、删除

package com.sdnware.start01.hadoop;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSDelete {

    public static void main(String[] args) {
        delete1();
    }

    public static void delete0(){//删除文件
        System.setProperty("hadoop.home.dir", "D:/soft/hadoop-2.6.0");
        System.setProperty("HADOOP_USER_NAME","root");//制定上传的用户
        Configuration conf = new Configuration();
        try {
            FileSystem hdfs = FileSystem.get(new URI("hdfs://f1:9000"), conf);
            Path hdfsFile = new Path("/user/wordcount/My Father.txt");
            hdfs.delete(hdfsFile, false);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    public static void delete1(){//删除目录
        System.setProperty("hadoop.home.dir", "D:/soft/hadoop-2.6.0");
        System.setProperty("HADOOP_USER_NAME","root");//制定上传的用户
        Configuration conf = new Configuration();
        try {
            FileSystem hdfs = FileSystem.get(new URI("hdfs://f1:9000"), conf);
            Path hdfsFile = new Path("/usr");
            hdfs.delete(hdfsFile, true);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Hadoop Java API创建文件夹的步骤如下: 1. 获取Hadoop文件系统对象 FileSystem fs = FileSystem.get(new Configuration()); 2. 创建文件夹 Path folderPath = new Path("/path/to/folder"); fs.mkdirs(folderPath); 其中,/path/to/folder是要创建的文件夹路径。 3. 关闭文件系统对象 fs.close(); 以上就是使用Hadoop Java API创建文件夹的步骤。 ### 回答2: Hadoop是一个分布式系统,其中包含了一个分布式文件系统,称为Hadoop Distributed File System(HDFS)。Hadoop提供了Java API来操作HDFS中的文件和目录。在Hadoop中创建文件夹的过程非常简单,只需要使用FileSystem类的mkdirs()方法即可完成。 mkdirs()方法的语法如下: public boolean mkdirs(Path f) throws IOException 其中,Path f表示要创建的文件夹路径。该方法返回一个布尔值,表示是否成功创建文件夹。 下面是创建文件夹的Java代码示例: 1.首先,创建一个Configuration对象,用于Hadoop配置 Configuration conf = new Configuration(); 2.然后,使用FileSystem静态方法获取一个文件系统对象 FileSystem fs = FileSystem.get(conf); 注:这里使用的是getDefaultFileSystem()方法获取一个默认的文件系统对象,也可以使用get(URI uri, Configuration conf)方法根据指定的URI和配置对象获取文件系统对象。 3.接下来,定义要创建的文件夹路径 Path folderPath = new Path("/myfolder"); 注:这里使用的是绝对路径,也可以使用相对路径,如“myfolder”。 4.最后,调用mkdirs()方法创建文件夹 boolean result = fs.mkdirs(folderPath); 完整的Java代码如下: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; public class CreateFolder { public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.getDefaultFileSystem(conf); Path folderPath = new Path("/myfolder"); boolean result = fs.mkdirs(folderPath); if (result) { System.out.println("文件夹创建成功!"); } else { System.out.println("文件夹创建失败!"); } } } 当运行该程序时,如果文件夹创建成功,则会输出“文件夹创建成功!”信息,否则输出“文件夹创建失败!”信息。 ### 回答3: Hadoop是一个分布式的数据存储和处理框架,其中的Java API提供了创建文件夹和文件的方法。下面是具体的步骤: 1. 导入相关的Hadoop依赖库: ``` java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; ``` 2. 创建一个Configuration对象,并设置相关的Hadoop配置信息: ``` java Configuration conf = new Configuration(); conf.setBoolean("dfs.support.append", true); conf.set("fs.defaultFS", "hdfs://localhost:9000"); ``` 其中,dfs.support.append用来开启文件追加功能,fs.defaultFS指定了HDFS的地址。 3. 获取一个FileSystem实例: ``` java FileSystem fs = FileSystem.get(conf); ``` 4. 使用mkdirs()方法创建目录: ``` java Path dir = new Path("/testDir"); if (!fs.exists(dir)) { fs.mkdirs(dir); } ``` 其中,/testDir是要创建的目录路径。 5. 关闭FileSystem实例: ``` java fs.close(); ``` 以上就是使用Hadoop Java API创建文件夹的完整步骤。在创建文件时,也可以使用类似的方法。需要注意的是,在Hadoop中,文件和目录都被视为Path对象。因此,我们需要使用Path类来指定要创建的文件或目录的路径。同时,我们也需要注意,在HDFS中创建文件或目录时,如果路径中的某些目录不存在,则会自动创建这些目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值