zoukankan      html  css  js  c++  java
  • hdfs常用api(java)

    1.下载文件到本地

    public class HdfsUrlTest {

    static{

    //注册url java程序识别hdfsurl

    URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

    }

    public static void main(String[] args) {

    InputStream in = null;

    OutputStream out = null;

    try {

     String file = "hdfs://hadoop-yarn.test.com:8020/user/testi/conf/core-site.xml";

     URL fileUrl = new URL(file);

     in = fileUrl.openStream();

     out = new FileOutputStream(new File("d:/core-site.xml"));

    //下载文件到本地

     IOUtils.copyBytes(in,out,4096, false);

    } catch (Exception e) {

    e.printStackTrace();

    }finally{

    IOUtils.closeStream(in);}}}

    2.查看集群信息

    public static void cluserStatus() throws Exception{

     FileSystem fs = HdfsUtil.getFs();

     DistributedFileSystem dfs  = (DistributedFileSystem)fs;

     FsStatus fss = dfs.getStatus();

     DatanodeInfo[] datanodeInfos = dfs.getDataNodeStats();

     for(DatanodeInfo datanodeinfo : datanodeInfos){

     System.out.println(datanodeinfo.getHostName());}}

    3.创建一个文件夹

    public void testHDFSMkdir() throws Exception{  

    String hdfsUrl = "hdfs://192.168.10.11:8020";

    Configuration conf= new Configuration();

    FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);

    Path path = new Path("/bigdata");

    fs.mkdirs(path);}

    4.创建一个文件

    public void testCreateFile() throws Exception{

    String hdfsUrl = "hdfs://192.168.10.11:8020";

    Configuration conf= new Configuration();

    FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);

    Path path = new Path("/bigdata/a.txt");

    FSDataOutputStream out = fs.create(path);

    out.write("hello hadoop".getBytes());}

    5.文件重命名

    public void testRenameFile() throws Exception{  

    String hdfsUrl = "hdfs://192.168.10.11:8020";

    Configuration conf= new Configuration();

    FileSystem fs = FileSystem.get(URI.create(hdfsUrl),conf);

    Path path = new Path("/bigdata/a.txt");

    Path newPath = new Path("/bigdata/b.txt");

    System.out.println(fs.rename(path, newPath));}

    6.上传文件

    public static void write() throws Exception{

    FileSystem fs = HdfsUtil.getFs();

    OutputStream outStream = fs.create(new Path("/user/lcc/conf/put-core-site.xml"));

    FileInputStream inStream = new FileInputStream(new File("d:/core-site.xml"));

    IOUtils.copyBytes(inStream, outStream, 4096, true);}

    Hadoop程序读取hdfs中的数据,最简单的方法是使用javaURL对象打开一个数据流,并从中读取数据

    需要一个fsUrlStreamHandlerFactory实例调用set过的一个URL这种方法java虚拟机只能调用一次,缺点是如果程序的其他部分也设置了这个,会导致无法再从hadoop中读取数据。

    方法,需要使用filesystemapi打开一个文件的输入流。

    文件hadoop文件系统中被视为一个hadoop path对象,把一个文件夹或文件路径看做为一个hadoop文件系统的URL

    三种方法。

    Getconf和geturiconf,newInstance

  • 相关阅读:
    SpringCloud初体验:四、API GateWay 服务网关
    SpringCloud初体验:三、Feign 服务间调用(FeignClient)、负载均衡(Ribbon)、容错/降级处理(Hystrix)
    SpringCloud初体验:二、Config 统一配置管理中心
    SpringCloud初体验:一、Eureka 服务的注册与发现
    PHP 通过实现 Iterator(迭代器)接口来读取大文件文本
    SpringCloud初体验:前言
    springboot利用MockMvc测试controller控制器
    vue通过(NGINX)部署在子目录或者二级目录实践
    PHP 设计模式 原型模式(Prototype)之深/浅拷贝
    PHPstorm配置PHPunit对composer引入的php代码进行单元测试
  • 原文地址:https://www.cnblogs.com/lccyb/p/9488571.html
Copyright © 2011-2022 走看看