HDFS开发实例
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开发实例的更多相关文章
- HDFS高级开发培训课程之HDFS开发实例课件
前言: 刚刚完成的HDFS高级开发培训课程课件中的一个章节,不知道PPT,如何导出HTML格式,只好批量导出图片,贴图了. 连接管理:建立连接.断开连接.设置连接参数 文件操作:浏览文件.上传文件.下 ...
- Ubuntu16.04安装Hadoop2.6+Spark1.6+开发实例
Ubuntu16.04安装Hadoop2.6+Spark1.6,并安装python开发工具Jupyter notebook,通过pyspark测试一个实例,調通整个Spark+hadoop伪分布式开发 ...
- ecshop二次开发 给商品添加自定义字段【包含我自己进一步的开发实例详解】
本文包含商品自定义添加教程及进一步的开发实例: 教程: 说起自定义字段,我想很多的朋友像我一样会想起一些开源的CMS(比如Dedecms.Phpcms.帝国)等,他们是可以在后台直接添加自定义字段的. ...
- RDIFramework.NET -.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(WebForm版)
RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(WebForm版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之 ...
- RDIFramework.NET-.NET快速信息化系统开发整合框架 【开发实例 EasyUI】之产品管理(MVC版)
RDIFramework.NET—.NET快速开发整合框架 [开发实例]之产品管理(MVC版) 接上篇:RDIFramework.NET (.NET快速信息化系统开发整合框架) [开发实例]之产品管理 ...
- Cocos2d-x 3.X手游开发实例详解
Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...
- 免费的HTML5连载来了《HTML5网页开发实例详解》连载(二)
最近新浪.百度.腾讯.京东.大众点评.淘宝等流行的网站都加大了招聘HTML5的力度,HTML5开发人员成了抢手货,本次连载的是由大众点评前端工程师和一淘网前端工程师基情奉献的<HTML5网页开发 ...
- RDIFramework.NET开发实例━表约束条件权限的使用-Web
RDIFramework.NET开发实例━表约束条件权限的使用-Web 在上一篇文章“RDIFramework.NET开发实例━表约束条件权限的使用-WinForm”我们讲解了在WinForm下表约束 ...
- RDIFramework.NET开发实例━表约束条件权限的使用-WinForm
RDIFramework.NET开发实例━表约束条件权限的使用-WinForm 在实际的应用中,客户常有这样的需求,指定用户或角色可以看指定条件下的数据,这里的“指定条件”在RDIFramework. ...
随机推荐
- Oracle 11g 编译使用BBED
环境:RHEL 6.4 + Oracle 11.2.0.4 1. 拷贝缺失文件 2. 编译BBED 3. BBED使用测试 Reference 1. 拷贝缺失文件 11g中缺失几个相关文件,但我们实际 ...
- PJAX初体验(主要是利用HTML5 新增API pushState和replaceState+AJAX)
说在前面 什么是PJAX呢? 站在应用角度的就是既实现了页面无刷新的效果,同时也产生了浏览器的前进和后退,而且url也会变化. 也不是什么新鲜技术,主要是AJAX+html5 pushState和re ...
- Android四大组件之一“广播”
前言 Android四大组件重要性已经不言而喻了,今天谈谈的是Android中的广播机制.在我们上学的时候,每个班级的教室里都会装有一个喇叭,这些喇叭都是接入到学校的广播室的,一旦有什么重要的通知,就 ...
- JavaScriptSerializer 序列化json 时间格式
利用JavaScriptSerializer 序列化json 时间格式,得到的DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,显然要进行转换 1.利用字符串直 ...
- Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则
众所周知Visual Studio 2013中有一个由SignalR机制实现的Browser Link功能,意思是开发人员可以同时使用多个浏览器进行调试,当按下IDE中的Browser Link按钮后 ...
- 初来乍到 Java 和 .Net 迭代器功能
最近有一个需求是这样的, 根据键值对存储类型数据,也算是数据缓存块模块功能设计. 一个键对应多个值.每一个键的值类型相同,但是每个不同的键之间类型不一定相同. Java 设计如下 HashMap< ...
- JS产生随机数的几个用法!
<script> function GetRandomNum(Min,Max) { var Range = Max - Min; var Rand = Math.random(); ret ...
- log4Net(写入日志文件)
这里就简单介绍下log4Net对写入日志文件的一些了解,写入数据库类似,就不在一一介绍了. 首先去log4net下载. 然后我们新建一个控制台应用程序,并引入log4net.dll程序集,log4ne ...
- EC笔记,第二部分:10.让=返回指向*this的引用
Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...
- 领域驱动设计常见问题FAQ
本文出处:http://www.cqrs.nu/Faq What is a domain? The field for which a system is built. Airport managem ...