美文网首页
HDFS的相关操作

HDFS的相关操作

作者: Lokvahkoor | 来源:发表于2017-07-18 08:27 被阅读9次

[本文为草稿,代码中很多地方都还没有仔细研究,等明天会补上更多的注释]

这节课的关键就在于课程中提供的3段代码,要会用,会读,更要会改。

hadoop fs -[command] 执行HDFS命令

FilesySystemCat.java 代码分析:

//这段程序用于读取hdfs上的text文件,并把文件中的内容输出到终端上
import java.io.InputStream;

import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;

public class FileSystemCat {
    public static void main(String[] args) throws Exception {
            String uri = args[0]; //uri 文件路径
            Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create(uri),conf); //配置文件读取对象
        InputStream in = null;
    try{
        in = fs.open(new Path(uri));
        IOUtils.copyBytes(in, System.out, 4096, false); //open后的操作:取字符流输出到System.out
        } finally {
        IOUtils.closeStream(in);
        }
    }
}

localFile2HDFS 代码分析:

//这段代码用于读入一个本地的TXT文件并将其第101-120字节的内容写入HDFS成为一个新文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URI;

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

public class LocalFile2Hdfs {
    public static void main(String[] args) throws Exception {

        // 获取读取源文件和目标文件位置参数
        String local = args[0];
        String uri = args[1];

        FileInputStream in = null;
        OutputStream out = null;
        Configuration conf = new Configuration();
        try {
            // 获取读入文件数据
            in = new FileInputStream(new File(local));

            // 获取目标文件信息
            FileSystem fs = FileSystem.get(URI.create(uri), conf);
            out = fs.create(new Path(uri), new Progressable() {
                @Override
                public void progress() {
                    System.out.println("*");
                }
            });

            // 跳过前100个字符
            in.skip(100);
            byte[] buffer = new byte[20];

            // 从101的位置读取20个字符到buffer中
            int bytesRead = in.read(buffer);
            if (bytesRead >= 0) {
                out.write(buffer, 0, bytesRead);
            }
        } finally {
            IOUtils.closeStream(in);
            IOUtils.closeStream(out);
        }        
    }
}

HDFS2LocalFile 代码分析:

//这段代码用于读入一个在hdfs上的txt文件,并将其第101-120字节的内容写入本地文件系统成为一个新文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.URI;

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

public class Hdfs2LocalFile {
    public static void main(String[] args) throws Exception {

        String uri = args[0];
        String local = args[1];

        FSDataInputStream in = null;
        OutputStream out = null;
        Configuration conf = new Configuration();
        try {
            FileSystem fs = FileSystem.get(URI.create(uri), conf);
            in = fs.open(new Path(uri));
            out = new FileOutputStream(local);

            byte[] buffer = new byte[20];
            in.skip(100);
            int bytesRead = in.read(buffer);
            if (bytesRead >= 0) {
                out.write(buffer, 0, bytesRead);
            }
        } finally {
            IOUtils.closeStream(in);
            IOUtils.closeStream(out);
        }    
    }
}

相关文章

  • 大数据 Hadoop(三)API操作

    第03章 Hadoop API操作 HDFS操作 Maven配置 进行haddop HDFS相关开发首先需要引入下...

  • HDFS的相关操作

    [本文为草稿,代码中很多地方都还没有仔细研究,等明天会补上更多的注释] 这节课的关键就在于课程中提供的3段代码,要...

  • HDFS基本使用

    HDFS 指令 通常需要在LINUX控制台查询HDFS相关信息,此时就需要使用到HDFS相关命令。 dfs相关命令...

  • hadoop

    一 目录结构 1.bin:存放操作hadoop相关服务的脚本(hdfs;yarn;mapred) 2.sbin:存...

  • Hadoop HDFS文件操作API

    使用JAVA操作HDFS: 使用Shell操作HDFS: Usage: hadoop fs [generic op...

  • hadoop笔记(四)HDFS的shell和api

    前面进行了hdfs原理的学习,下面进行hdfs的shell操作和api操作。1、hdfs命令hadoop的shel...

  • 通过API访问HDFS

    通过API操作HDFS 今天的主要内容 HDFS获取文件系统 HDFS文件上传 HDFS文件下载 HDFS目录创建...

  • 大数据学习day_4

    思考问题 HDFS的IO操作总结 Hadoop工程下与I/O相关的包如下: org.apache.hadoop.i...

  • HDFS 配置本地客户端

    之前,一直通过Linux命令操作HDFS。接下来,在本地配置HDFS客户端,通过编写代码操作HDFS。 环境: m...

  • HDFS 操作

    https://www.w3cschool.cn/hadoop/hadoop_hdfs_operations.ht...

网友评论

      本文标题:HDFS的相关操作

      本文链接:https://www.haomeiwen.com/subject/nksckxtx.html