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. ... 
随机推荐
- 在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容
			一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ... 
- 重温Servlet学习笔记--编码问题
			在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1: 拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ... 
- 行程编码(atoi函数)
			#include<iostream> #include<string> #include<vector> using namespace std; void jie ... 
- Electron Angular 开发小记
			一介绍 electron分为主进程和渲染进程,主进程负责和原生交互,控制窗口等. 渲染进程就是普通网页.主进程和渲染进程可以通过ipcMain(主进程使用)及ipcRenderer(渲染进程用)通信 ... 
- 有了jsRender,妈妈再也不用担心我用jq拼接DOM拼接的一团糟了、页面整齐了、其他伙伴读代码也不那么费劲了
			写在前面 说来也很巧, 下午再做一个页面,再普通不过的分页列表,我还是像往常一样,基于MVC环境下,我正常用PagedList.MVC AJAX做无刷新分页,这时候问题就来了,列表数据中有个轮播图用到 ... 
- Go语言异常处理defer\panic\recover
			Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱.因为开发者很容易滥用异常, ... 
- JavaScript中的数据类型转换
			本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ... 
- 9.Configure One-to-One(配置一对一关系)【Code-First系列】
			现在,开始学习怎么配置一对一的关系,众所周知,一对一的关系是:一个表中的主键,在另外一个表中,同时是主键和外键[实际上是一对零或者一对一]. 请注意:一对一的关系,在MS SQL Server中,技术 ... 
- 【手记】未能从程序集System.Net.Http.Formatting中加载类型System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter
			实际报错如图: 如果你跟我一样是在折腾Asp.Net WebApi 2.x时遇到这个问题,请参看如下办法: 删除现有System.Net.Http.Formatting引用(如果引用了的话) 重新引用 ... 
- Unity3D 5.x 简单实例 - 脚本编写
			1,Vector3 类型变量存储向量坐标值 Vector3.forward Vector3(0,0,1) Vector3.up Vector3(0,1,0) Vector3.right Vector3 ... 
