HDFS API 使用示例

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

import org.apache.poi.ss.formula.functions.T;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

/**
 * @Author: gh
 * @Description: 查询文件列表,删除文件,下载文件,新增文件,某个路径下的文件数量;
 * hdfs利用率,hdfs存储大小,获取文件的字节数组
 */
public interface HdfsDao {
///opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/lib/hadoop/etc/hadoop
    //查询文件列表
    public String listPath(String path);

    /**
     * 下载文件到本地
     * @param src  fs上的文件路径地址
     * @param dst  本地存放的地址
     * @return 1表示下载成功 ,-1表示下载失败
     */
    public int copyFileToLocal(String src,String dst);

    /**
     * 下载文件到客户端
     * @param resp 对客户端请求的响应
     * @param src fs上的文件路径地址
     * @return 1表示下载成功 ,-1表示下载失败
     */
    public int copyFileToClient(HttpServletResponse resp,String src);

    /**
     * 上传客户端文件到远程Hadoop文件系统。
     * @param req 客户端请求
     * @param hdfsPath HDFS文件路径
     * @return 1表示上传成功 ,-1表示上传失败
     */
    public int uploadToHDFS(HttpServletRequest req,String hdfsPath);

    /**
     * 删除HDFS上的文件OR文件夹(删除文件夹下的所有内容)
     * @param hdfsPath HDFS路径
     * @return 1表示删除成功 ,-1表示删除失败
     */
    public int deleteHDFSFile(String hdfsPath);
    /**
     * 统计某个路径下(次级目录)的文件总数。
     * @param pathName 路径的名称
     * @return
     */
    public long totalCount(String pathName);
    /**
     * 统计某个路径(相当于数据库)次级目录下所有的文件(相当于表)的数量
     * @param dirPath 文件夹路径
     * @return 文件的数量
     */
    public int countTables(String dirPath);
    /**
     * 获取某个文件夹路径(相当于数据库)下所有文件(相当于表)的名称列表。
     * @return
     */
    public List<String> getTablenamesOfDB(String dirPath);
    /**
     * Non DFS used = ( Total Disk Space - Reserved Space) - Remaining Space - DFS Used
     * hdfs使用率 = DFS used / DFS space
     *           = DFS used / ( Total Disk Space - Reserved Space - Remaining Space)
     * DFS used = bpUsed(block pool)
     * Reserved Space = dfs.datanode.du.reserved
     * @return
     */
    public double usedRate();
    /**
     * @param path 需要查询的路径
     * @return (某个路径下)已使用存储空间的大小
     */
    public double storeSizeOfMB(String path);
    /**
     * @return 全部已使用存储空间的大小
     */
    public double storeSizeOfMB();

    /**
     * 获取文件的字节数组
     * @param filePath 文件路径
     * @return
     */
    public InputStream getFileBytes(String filePath);
}

import com.alibaba.fastjson.JSONObject;
import com.genius.pojo.pg.dto.DataBaseDTO;
import com.google.common.base.Charsets;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.hdfs.HAUtil;
import org.springframework.util.StringUtils;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;

/**
 * @Author: gh
 * @Description: 连接访问HDFS,增删查下载文件。
 */
public class HdfsDaoImpl implements HdfsDao{

    FileSystem fs = null;
    DataBaseDTO dataBaseDTO = null;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值