访问hdfs上的文件并写出到输出台

   /**
* 访问hdfs上的文件并写出到输出台
* @param args
*/
public static void main(String[] args) {
try {
//将hdfs格式的url转换成系统能够识别的
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
URL url = new URL("hdfs://hadoop1:9000/hello");
InputStream in = url.openStream();
/**
* 将读取到的数据写入到文件,不需要自己控制缓冲区,也不需要自己去读取输入流
* @param in 输入流
* @param out 输出流
* @param bufferSize 换成区大小
* @param close 是否关闭流,如果是false,需要在finally中关闭
* IOUtils.closeStream(in);
*/
IOUtils.copyBytes(in, System.out, 1024, true);
} catch (Exception e) {
e.printStackTrace();
}
}

获取FileSystem

   /**
* 获取FileSystem
* 使用Hadoop的fileSystem读取文件
*/
public static FileSystem getFileSystem() throws IOException,
URISyntaxException {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:9000"), new Configuration());
return fileSystem;
}

创建文件夹

   /**
* 创建文件夹
* @throws URISyntaxException
*/
public static void mkdir() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
//在hdfs上创建文件夹,并返回创建是否成功的标示
boolean successful = fileSystem.mkdirs(new Path("/dir1"));
if(successful){
System.out.println("创建文件夹成功");
}
}

上传

   /**
* 上传
* @throws URISyntaxException
*/
public static void putdata() throws IOException,
FileNotFoundException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
//创建一个上传路径,返回输出流
FSDataOutputStream os = fileSystem.create(new Path("/dir1/readme"));
FileInputStream in = new FileInputStream("D:\\Program Files\\others\\2345Soft\\HaoZip\\2345好压免责声明.txt");
IOUtils.copyBytes(in, os, 1024, true);
}

下载

   /**
* 下载
* @throws URISyntaxException
*/
public static void download() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
FSDataInputStream in = fileSystem.open(new Path("hdfs://hadoop1:9000/hello"));
//关闭流需要手动关闭,System.out也是一个输出流,如果是true 下面就不会输出了
IOUtils.copyBytes(in, System.out, 1024, false);
in.close();
}

删除文件或文件夹

   /**删除文件或文件夹
* true:表示是否递归删除,如果是文件,这里是true,false都是无所谓,
* 文件夹必须是true,否则报错
* @throws URISyntaxException
*/
public static void delete() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
boolean isDeleted = fileSystem.delete(new Path("/dir1"), true);
if(isDeleted){
System.out.println("删除成功");
}
}

遍历目录

    /**遍历目录
* 调用FileSystem的listStatus方法
* 查看file的状态 使用FileStatus
* @throws URISyntaxException
*/
public static void list() throws IOException, URISyntaxException {
FileSystem fileSystem = getFileSystem();
FileStatus[] listStatus = fileSystem.listStatus(new Path("/"));
for (FileStatus fileStatus : listStatus) {
String isDir = fileStatus.isDir()?"目录":"文件";
String name = fileStatus.getPath().getName().toString();
System.out.println(isDir+"-->"+name);
}
}

hadoop hdfs的java操作的更多相关文章

  1. hadoop学习(五)----HDFS的java操作

    前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...

  2. Hadoop HDFS文件常用操作及注意事项

    Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...

  3. Hadoop HDFS (3) JAVA訪问HDFS

    如今我们来深入了解一下Hadoop的FileSystem类. 这个类是用来跟Hadoop的文件系统进行交互的.尽管我们这里主要是针对HDFS.可是我们还是应该让我们的代码仅仅使用抽象类FileSyst ...

  4. Hadoop HDFS的Shell操作实例

    本文发表于本人博客. 我们知道HDFS是Hadoop的分布式文件系统,那既然是文件系统那最起码会有管理文件.文件夹之类的功能吧,这个类似我们的Windows操作系统一样的吧,创建.修改.删除.移动.复 ...

  5. [b0014] HDFS 常用JAVA 操作实战

    目的: 学习用java进行的常用hdfs操作 参考: [b0002] Hadoop HDFS cmd常用命令练手 环境: hadoop2.6.4 win7 下的eclipse环境调试已经配置好,参考前 ...

  6. Hadoop HDFS文件常用操作及注意事项(更新)

    1.Copy a file from the local file system to HDFS The srcFile variable needs to contain the full name ...

  7. HDFS的Java操作

    实验环境: Windows 10 Eclipse Mars.2 Release (4.5.2) CentOS 7 Hadoop-2.7.3 先决条件: 1) Windows上各环境变量已配置OK.   ...

  8. Hadoop HDFS (3) JAVA訪问HDFS之二 文件分布式读写策略

    先把上节未完毕的部分补全,再剖析一下HDFS读写文件的内部原理 列举文件 FileSystem(org.apache.hadoop.fs.FileSystem)的listStatus()方法能够列出一 ...

  9. Hadoop HDFS Basic JAVA API

      org.apache.hadoop.fs.FileSystem 是HDFS的文件系统抽象,在分布式系统中管理HDFS文件和目录.文件内容存储在由多个相同大小的块(如64M)构成的datanode节 ...

随机推荐

  1. PAT-乙级-1037. 在霍格沃茨找零钱(20)

    1037. 在霍格沃茨找零钱(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 如果你是哈利·波特迷,你会知 ...

  2. #pragma预处理指令讲解

    在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...

  3. 编写你的第一个 Django 程序 第1部分

    原地址:http://django-chinese-docs.readthedocs.org/en/latest/intro/tutorial01.html 让我们通过例子来学习. 在本教程中,我们将 ...

  4. socket选项自带的TCP异常断开检测

    TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应 ...

  5. C++11新特性:自动类型推断和类型获取

    声明:本文是在Alex Allain的文章http://www.cprogramming.com/c++11/c++11-auto-decltype-return-value-after-functi ...

  6. Android ExpandableListView 带有Checkbox的简单应用

    expandablelistview2_groups.xml <?xml version="1.0" encoding="utf-8"?> < ...

  7. 李洪强iOS开发拓展篇—UIDynamic(重力行为+碰撞检测)

    iOS开发拓展篇—UIDynamic(重力行为+碰撞检测) 一.重力行为 说明:给定重力方向.加速度,让物体朝着重力方向掉落 1.方法 (1)UIGravityBehavior的初始化 - (inst ...

  8. SQLite入门与分析(四)---Page Cache之事务处理(3)

    写在前面:由于内容较多,所以断续没有写完的内容. 11.删除日志文件(Deleting The Rollback Journal)一旦更改写入设备,日志文件将会被删除,这是事务真正提交的时刻.如果在这 ...

  9. Android:简单的开场界面

    接通过ImageView创建一个全屏的图片: <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

  10. ArcGIS学习记录—KMZ KML与SHP文件互相转换

      1.在google earth中绘制边界  工具栏中选择"Add Polygon".随意绘制一个多边形.  右击添加的图层名(左侧)保存位置为,选择保存为kmz或kml文件.  ...