访问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. Struts2自定义拦截器实例—登陆权限验证

    版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ...

  2. smarty foreach 最全用法

    <?php$search_condition = "where name like '$foo%' ";$sql = 'select contact_id, name, ni ...

  3. uva 10780

    曾经做过一个类似的  求n!中有多少个质因子m 这里有一个结论 k = n/m+n/(m^2)+n/(m^3)+.... int getnum(int n, int m) { int sum = 0; ...

  4. C++中的构造函数,拷贝构造函数和赋值运算

    关于C++中的构造函数,拷贝构造函数和赋值运算,以前看过一篇<高质量C++/C编程指南>的文章中介绍的很清楚,网上能搜索到,如果想详细了解这方面的知识可以参看一下这篇文章. 常见的给对象赋 ...

  5. c++调用matlab生成的Dll动态连接库

    点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台:   matlab 7.0(R ...

  6. Why does yum return error: [Errno 256] No more mirrors to try ?

    https://access.redhat.com/solutions/203603 ISSUE yum update fails with the error : [Errno 256] No mo ...

  7. [itint5]两数积全为1

    http://www.itint5.com/oj/#18 这一题,首先如果直接去算的话,很容易就超出int或者long的表示范围了.那么要利用%的性质,(num * 10 + 1) % a = 10 ...

  8. Android:为控件绑定监听器

    为控件绑定监听器主要分为以下步骤: 1.获取代表控件的对象2.定义一个类,实现监听器接口3.生成监听器对象4.为控件绑定监听器对象 实例:Button按钮----监听器OnClickListener ...

  9. Myeclipse 8.5 优化设置

    1.1 更改JavaScript文件默认编码 1.2 关闭Myeclipse不需要的启动项 1.3 取消Myeclipse自动更新 1.4 关闭Myeclipse自动验证 1.5 设置Myeclips ...

  10. STM32硬件复位时间

    两个参数,,1低电平时间 2低电平压值 1.stm32复位时间 ------  低电平时间:1.5 至 4.5 ms   2.压值