HDFS常用API(1)

一、HDFS集群API所需要jar包的maven配置信息

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.8.4</version>
        </dependency>    

二、从HDFS下载数据文件/上传文件到HDFS文件系统

  思路:1.获取配置信息

     2.设置配置信息(块大小、副本数)

     3.构造客户端

     4.下载数据文件/上传数据文件

     5.关闭资源

  (1)下载文件

/**
 * @author: PrincessHug
 * @date: 2019/3/18, 16:10
 * @Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class HdfsClientDemo02 {
    public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
        //配置信息对象
        Configuration conf = new Configuration();
        //设置具体配置信息
        conf.set("dfs.replication","2");
        //构造客户端
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root");

        //下载数据到本地
        fs.copyToLocalFile(new Path("/words1.txt"),new Path("f://words1.txt"));
        //关闭资源
        fs.close();
        System.out.println("下载完成");
    }
}

  (2)上传文件

/**
 * @author: PrincessHug
 * @date: 2019/3/18, 11:53
 * @Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class HdfsClientDemo01 {
    public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
        //配置信息
        Configuration conf = new Configuration();
        //配置块大小和副本数
        conf.set("dfs.blocksize","64m");
        conf.set("dfs.replication","2");
        //构造客户端
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root");
        //上传文件到hdfs客户端
        fs.copyFromLocalFile(new Path("/root/love.tsv"),new Path("/love1.tsv"));
        //关闭资源
        fs.close();
        System.out.println("上传成功!");
    }
}

三、对HDFS系统进行操作的API

/**
 * @author: PrincessHug
 * @date: 2019/3/18, 16:16
 * @Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class HdfsClientDemo {

    private static FileSystem fs = null;

    static {
        Configuration conf = new Configuration();
        conf.set("dfs.blocksize","64m");
        conf.set("dfs.replication","3");
        try {
            fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"),conf,"root");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建文件夹方法
     * @throws IOException
     */
    public void mkDir(String path) throws IOException {
        fs.mkdirs(new Path(path));
        fs.close();
    }

    /**
     * 重命名或移动文件
     * @param path1
     * @param path2
     * @throws IOException
     */
    public void hdfsRename(String path1,String path2) throws IOException {
        fs.rename(new Path(path1),new Path(path2));
        fs.close();
    }

    /**
     * 删除文件或文件夹
     * @param path 路径
     * @throws IOException
     */
    public void delete(String path) throws IOException {
        fs.delete(new Path(path),true);
        fs.close();
    }

    /**
     * 列出hdfs指定的目录信息
     * @param path
     * @throws IOException
     */
    public void list(String path) throws IOException {
        RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(path), true);
        while (iterator.hasNext()){
            //拿数据
            LocatedFileStatus status = iterator.next();
            System.out.println("文件的路径为:" + status.getPath());
            System.out.println("文件的块大小为:" + status.getBlockSize());
            System.out.println("文件的块信息为:" + Arrays.toString(status.getBlockLocations()));
            System.out.println("文件的长度为:" + status.getLen());
            System.out.println("文件的副本数为:" + status.getReplication());
            System.out.println("=====================================================");
        }
        fs.close();
    }

    /**
     * 判断时文件还是文件夹
     * @param parh
     * @throws IOException
     */
    public void judgeFileOrDir(String parh) throws IOException {
        //展示状态信息
        FileStatus[] fileStatuses = fs.listStatus(new Path(parh));
        //遍历所有文件
        for (FileStatus fs:fileStatuses){
            if (fs.isFile()){
                System.out.println("文件-----f------" + fs.getPath().getName());
            }else {
                System.out.println("文件-----d------" + fs.getPath().getName());
            }
        }
    }
}

public class HdfsDriver {
    public static void main(String[] args) {
        HdfsClientDemo hcd = new HdfsClientDemo();
        try {
            //hcd.mkDir("/wyh");
            hcd.judgeFileOrDir("/");
            hcd.list("/");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  

四、

原文地址:https://www.cnblogs.com/HelloBigTable/p/10581676.html

时间: 2024-10-13 23:23:26

HDFS常用API(1)的相关文章

hdfs常用api(java)

1.下载文件到本地 public class HdfsUrlTest { static{ //注册url 让java程序识别hdfs的url URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } public static void main(String[] args) { InputStream in = null; OutputStream out = null; try { String file = "hd

HDFS Java API 常用操作

package com.luogankun.hadoop.hdfs.api; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.

hadoop常用api编写

package hsfs常用api; import java.io.ByteArrayInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration;

hadoop java接口及常用api

# java接口及常用api package com.yting.hadoop.hdfs; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputS

[0014] HDFS 常用JAVA 操作实战

目的: 学习用java进行的常用hdfs操作 参考: [0002] Hadoop HDFS cmd常用命令练手 环境: hadoop2.6.4 win7 下的eclipse环境调试已经配置好,参考前面的文章 代码: 1. 创建文件夹 1 package hdfs; 2 3 import java.io.IOException; 4 5 import org.apache.hadoop.conf.Configuration; 6 import org.apache.hadoop.fs.FileSy

Hadoop HDFS Java API

[toc] Hadoop HDFS Java API 主要是Java操作HDFS的一些常用代码,下面直接给出代码: package com.uplooking.bigdata.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.io

C++ 中超类化和子类化常用API

在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWindowLong,CallWindowProc,FindWindowEx 超类化:GetClassInfoEx,RegisterClassEx,UnRegisterClass 以上函数在代码中的使用见<C++ 中超类化和子类化> VC中基于SDK编程的窗口子类化 VC中基于SDK编程的窗口子类化的

List容器——ArrayList及常用API

List: ①   List容器是有序的collection(也称为序列).此接口的用户可以对List容器中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素.List容器允许插入重复的值,包括null; ②   最常见的两个List接口的实现类是ArrayList和LinkedList; ArrayList及常用API: ①   ArrayList—动态数组; ②   ArrayList类扩展了AbstractList并实现了List接口

hdfs常用命令

hadoop hdfs常用命令 hadoop fs -ls /user/deploy/recsys/workspace/ouyangyewei 查看ouyangyewei目录文件 hadoop fs -mkdir /user/deploy/recsys/workspace/ouyangyewei/input 在ouyangyewei目录下创建input文件夹 hadoop fs -rm /user/deploy/recsys/workspace/ouyangyewei/input/input.t