准备工作:

  给hdfs里上传一份用于测试的文件 

  [root@master ~]# cat hello.txt
  hello 1
  hello 2
  hello 3
  hello 4

  [root@master ~]# hadoop fs -put ./hello.txt /
  [root@master ~]# hadoop fs -ls /
  Found 1 items
  -rw-r--r-- 2 root supergroup 32 2018-11-12 22:42 /hello.txt

  java依赖的库:

  1.common
    hadoop-2.7.3\share\hadoop\common\hadoop-common-2.7.3.jar
  2.common依赖的jar
    hadoop-2.7.3\share\hadoop\common\lib下的所有
  3.hdf
    hadoop-2.7.3\share\hadoop\hdfs\hadoop-hdfs-2.7.3.jar

代码:

  利用JDK的URL类

import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import java.io.InputStream;
import java.net.URL; public class TestHDFS {
public static void main(String[] args) throws Exception{
// URL url = new URL("http://www.baidu.com");
//URL这个类是Java的,他默认只认识HTTP协议,这里需要设置一下,让他认识HDFS协议
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
//这里的地址和端口,相当与hdfs里的根目录, 然后在拼上要访问的文件在hdfs里的路径
URL url = new URL("hdfs://192.168.0.104:9000/hello.txt");
InputStream in = url.openStream();
IOUtils.copyBytes(in, System.out, 4096, true);
}
}

利用hadoop的工具类:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils; import java.io.FileInputStream;
import java.util.Properties; public class TestHDFS {
public static void main(String[] args) throws Exception{
Properties properties = System.getProperties();
properties.setProperty("HADOOP_USER_NAME", "root"); Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://192.168.0.104:9000");
FileSystem fs = FileSystem.get(conf); //存在的情况下会覆盖之前的目录
boolean success = fs.mkdirs(new Path("/xiaol"));
System.out.println(success); success = fs.delete(new Path("/xiaol"), true);
System.out.println(success); success = fs.exists(new Path("/xiaol"));
System.out.println(success); success = fs.exists(new Path("/hello.txt"));
System.out.println(success); FileStatus[] statuses = fs.listStatus(new Path("/"));
for(FileStatus status : statuses){
System.out.println(status.getPath());
System.out.println(status.getPermission());
System.out.println(status.getReplication());
} //上传windows上的文件
FSDataOutputStream fsout = fs.create(new Path("/test.data"), true);
FileInputStream in = new FileInputStream("D:/test.txt");
IOUtils.copyBytes(in, fsout, 4096, true);
}
}

    

访问hdfs里的文件的更多相关文章

  1. 初见Hadoop—- 搭建MyEclipse 访问HDFS 上的文件

    因公司项目需要,开始接触大数据分析这块知识.网上关于大数据这块的知识还是比较多的.学习了一个礼拜了,再次记录一下,自己的学习过程,希望可以帮助后学者少走一些弯路. 服务端的配置,由于公司项目经理已经配 ...

  2. day07 eclipse使用本地 库文件 访问HDFS

    常用命令 1. hdfs dfsadmin -report   查看系统的各台机器状态 HDFS的概念和特性 首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件 其次,它是分 ...

  3. hadoop的API对HDFS上的文件访问

    这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...

  4. 利用JavaAPI访问HDFS的文件

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. 使用python来访问Hadoop HDFS存储实现文件的操作

    原文:http://rfyiamcool.blog.51cto.com/1030776/1258292 在调试环境下,咱们用hadoop提供的shell接口测试增加删除查看,但是不利于复杂的逻辑编程 ...

  6. 22.访问jar包下资源路径里的文件

    访问jar包下资源路径里的文件 因为打包路径和你构建的代码路径是有差异的,想要查看真实的路径情况,可以查看编译后的classes目录下的文件结构. 想要获取资源文件流: private InputSt ...

  7. 几种访问HDFS文件的客户端的总结

    HDFS是英文Hadoop Distributed File System的缩写,中文翻译为Hadoop分布式文件系统,它是实现分布式存储的一个系统,所以分布式存储有的特点,HDFS都会有,HDFS的 ...

  8. 基于Httpfs访问HDFS的C++实现

    Httpfs是hadoop2.x中hdfs项目的内置应用,基于tomcat和jesery,对外提供完备HDFS操作的RESTful接口,无需安装客户端,可方便实现数据交互,如从windows访问存储在 ...

  9. 通过Thrift访问HDFS分布式文件系统的性能瓶颈分析

    通过Thrift访问HDFS分布式文件系统的性能瓶颈分析 引言 Hadoop提供的HDFS布式文件存储系统,提供了基于thrift的客户端访问支持,但是因为Thrift自身的访问特点,在高并发的访问情 ...

随机推荐

  1. linux学习笔记7---命令cp

    cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的 ...

  2. spring的容器(控制反转、依赖注入)

    一.spring的容器 ”容器“是spring的一个重要概念,其主要作用是完成创建成员变量,并完成装配. 而容器的特点”控制反转“和”依赖注入“是两个相辅相成的概念. 控制反转:我们在使用一个类型的实 ...

  3. 飞思卡尔烧写工具mfgtools的使用

    MFGTool是飞思卡尔提供的烧写工具,使用起来非常方便.但是,在使用MFGTool有几点是需要注意的,否则就会在烧写过程中遇到一些问题: 1.在使用MFGTool前,文件cfg.ini 和 UICf ...

  4. HBase学习笔记——配置及Shell操作

    1.HBase的配置 还是以前配置的集群,见:http://www.cnblogs.com/DarrenChan/p/6493373.html 我们约定:weekend03和weekend04放HMa ...

  5. eclipse JavaEE版"javax.servlet.http.HttpServlet" was not found on the Java Build Path问题的解决办法

    使用eclipse JavaEE 版,新建 Dynamic Web Project 项目.在项目里添加 JSP 文件,会在文件头部出现错误提示.提示语句为:The superclass "j ...

  6. HIBERNATE与 MYBATIS的对比,在这里做一下总结

    我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和 ...

  7. convolutional neural network 课程笔记

    一.CNN基础 (1)CNN在CV方面的应用 image classification(图像识别).object detection(目标检测).neural style transfer(风格迁移) ...

  8. 使用python封装get+post请求

    思路: 将平时用的多的get和post请求封装,提高代码重用率. 其中Session类可以通过实例化,保存cookie信息,可以在程序结束前多次通过保存的cookie信息保持登录状态的访问. 那么为什 ...

  9. mybatis总结(二)

    实现简单的crud,上一节已经进行最简单的查询 这次在oracle数据库中操作,就在oracle实例中操作,分别是Dept表和Emp表,所以配置文件需要改动. 1.实体类 Dept类 public c ...

  10. ddos cc攻击简单介绍(转)

    何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻 ...