1、列出HDFS中的文件

 package com.hdfs.test;

 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path; public class AccessHdfs {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException{ //以下两句仅用于在windows下访问服务器中的HDFS时,解决特定的错误问题
System.setProperty("hadoop.home.dir", "C:/Users/learn/Desktop/hadoopfiles");
System.setProperty("HADOOP_USER_NAME","hadoop"); Configuration conf = new Configuration(); //conf.set("fs.defaultFS", "hdfs://192.168.1.215:9000");
//FileSystem fS = FileSystem.get(conf);
//如果不在conf中设置,可以这样写:
FileSystem fS = FileSystem.get(URI.create("hdfs://192.168.1.215:9000"), conf); //列出目录
String dir = "/";
FileStatus[] fileStatus = fS.listStatus(new Path(dir));
Path[] list = FileUtil.stat2Paths(fileStatus);
for(Path path : list){
System.out.println(path.toString());
}
fS.close();
} }

注:

1> 如果出现了java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries 这种错误,可以通过设置设置HADOOP_HOME 环境变量来解决,在本例中,即使用System.setProperty("hadoop.home.dir", "C:/Users/learn/Desktop/hadoopfiles");这句代码,除此之外,还需要在设置的路径C:/Users/learn/Desktop/hadoopfiles中建立一个bin文件夹,并从网络上下载winutils.exe文件,放到这个bin文件夹中。至于所设置的路径,不必包含真正的hadoop文件。

2> System.setProperty("HADOOP_USER_NAME","hadoop");这句用于设置用户名,这是因为在linux中Hadoop系统的所有者被设置为hadoop用户,在windows下访问时可以这样显式的指定,如果没有指定,系统会将windows系统的当前用户作为访问Hadoop系统的用户,出现类似Permission denied的错误。

3> 当打包成jar文件时,以上两句是不需要的。

4> FileSystem用来获取文件系统的一个实例,FileStatus包含了文件中的元数据

2、创建目录与删除目录

 Configuration conf = new Configuration();
FileSystem fS = FileSystem.get(URI.create("hdfs://192.168.1.215:9000"), conf); //创建目录
fS.mkdirs(new Path("TestData"));
fS.mkdirs(new Path("/DataWorld")); //删除目录,如果是空的路径,可以忽略第二个参数
fS.delete(new Path("TestData"),true); fS.close();

 注意上传的路径,如果没有指定根目录,则是/user/用户名/目录名

3、上传文件与读取文件

 Configuration conf = new Configuration();
FileSystem fS = FileSystem.get(URI.create("hdfs://192.168.1.215:9000"), conf); //上传文件
Path src = new Path("C:/Users/learn/Desktop/hadoopfiles/Test.txt");
Path dst = new Path("TestData");
fS.copyFromLocalFile(src, dst); //读取文件
String filedir = "TestData/Test.txt";
FSDataInputStream file = fS.open(new Path(filedir));
BufferedReader in = null;
String line;
in =new BufferedReader(new InputStreamReader(file, "UTF-8"));
while ((line = in.readLine()) != null) {
System.out.println(line);
}
if(in !=null){
in.close();
}

也可以打包成jar文件运行

HDFS开发实例的更多相关文章

  1. HDFS高级开发培训课程之HDFS开发实例课件

    前言: 刚刚完成的HDFS高级开发培训课程课件中的一个章节,不知道PPT,如何导出HTML格式,只好批量导出图片,贴图了. 连接管理:建立连接.断开连接.设置连接参数 文件操作:浏览文件.上传文件.下 ...

  2. Ubuntu16.04安装Hadoop2.6+Spark1.6+开发实例

    Ubuntu16.04安装Hadoop2.6+Spark1.6,并安装python开发工具Jupyter notebook,通过pyspark测试一个实例,調通整个Spark+hadoop伪分布式开发 ...

  3. ecshop二次开发 给商品添加自定义字段【包含我自己进一步的开发实例详解】

    本文包含商品自定义添加教程及进一步的开发实例: 教程: 说起自定义字段,我想很多的朋友像我一样会想起一些开源的CMS(比如Dedecms.Phpcms.帝国)等,他们是可以在后台直接添加自定义字段的. ...

  4. RDIFramework.NET -.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(WebForm版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(WebForm版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之 ...

  5. RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)

    RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(MVC版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之产品管理 ...

  6. Cocos2d-x 3.X手游开发实例详解

    Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...

  7. 免费的HTML5连载来了《HTML5网页开发实例详解》连载(二)

    最近新浪.百度.腾讯.京东.大众点评.淘宝等流行的网站都加大了招聘HTML5的力度,HTML5开发人员成了抢手货,本次连载的是由大众点评前端工程师和一淘网前端工程师基情奉献的<HTML5网页开发 ...

  8. RDIFramework.NET开发实例━表约束条件权限的使用-Web

    RDIFramework.NET开发实例━表约束条件权限的使用-Web 在上一篇文章“RDIFramework.NET开发实例━表约束条件权限的使用-WinForm”我们讲解了在WinForm下表约束 ...

  9. RDIFramework.NET开发实例━表约束条件权限的使用-WinForm

    RDIFramework.NET开发实例━表约束条件权限的使用-WinForm 在实际的应用中,客户常有这样的需求,指定用户或角色可以看指定条件下的数据,这里的“指定条件”在RDIFramework. ...

随机推荐

  1. IntelliJ IDEA上创建maven Spring MVC项目

    IntelliJ IDEA上创建Maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...

  2. 使用RMAN创建复制数据库

    我的实验环境: - 源数据库A机: RHEL6.4 + Oracle 11.2.0.4 IP地址:192.168.99.159 db_name=oradb 数据库已正常运行 - 复制数据库B机: RH ...

  3. hdu FatMouse's Speed 动态规划DP

    动态规划的解决方法是找到动态转移方程. 题目地址:http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=3&sectionid ...

  4. jQuery 插件为什么要return this.each()

    jQuery.fn.test2= function(){ this.css("background","#ff0");//这里面的this为jquery对象,而 ...

  5. web前端学习随笔

    为什么是随笔 好好算下来,学习web前端已有半个月了,这半个月来主要学习的是HTML和CSS部分,期间有困惑,也有解决困惑时的快感,所以想把这段时间感受到的一些东西记下来,因为内容比较杂,所以干脆叫随 ...

  6. DIB位图(Bitmap)的读取和保存

    设备无关位图(Device Independent Bitmap)是可以保存在磁盘的位图文件,可以从磁盘读取到内存或者从内存保存到磁盘上.它的文件结构是标准化的,可以在Windows/Linux/Un ...

  7. spring-boot - demo

    当我发现把最初的一个demo整的面目全非的时候,突然想要找一个简单的demo做测试,发现与其在原来的上面该,还不如新建一个demo. 官方入门:http://projects.spring.io/sp ...

  8. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

  9. 这些Javascript知识点,面试和平时开发都需要

    No1.语法和类型 1.声明定义 变量类型:var,定义变量:let,定义块域(scope)本地变量:const,定义只读常量.    变量格式:以字母.下划线“_”或者$符号开头,大小写敏感.    ...

  10. [VB.NET]调用API获取/设置键盘按键状态

    1.调用GetAsyncKeyState()获取指定按键的状态,GetActiveKey()检索指定范围内的按键状态 2.调用keybd_event()可合成一次击键事件,通常两次击键事件间需要设定时 ...