HDFS Java代码进行增删改查

提醒:如果要在idear或者eclipse等IDE下运行就必须在HDFS上给你所使用的目录分配权限给windows下的用户,为了方便起见建议给所有权限777

创建目录命令

hdfs dfs -mkdir myproject

分配权限命令 hdfs dfs -chmod 777 myproject HDFS增删改查工具类 package hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by LiuwenSheng on 2017/8/7. */ public class HDFSUtils { private final String FILE_PROTOCOL = "file:///"; private final String HDFS_PROTOCOL = "hdfs://xxx:9000/myproject";//此处xxx表示你的IP地址比如:192.168.18.1 /** * 用于从本地文件中选择文件上传至hdfs中 * @param conf org.apache.hadoop.conf.Configuration 配置信息 * @param localPath String 本地文件的存储路径 * @param hdfsPath String 上传到HDFS的路径 eg:/a/b.txt * @throws IOException */ public void file2HDFS( Configuration conf,String localPath,String hdfsPath)throws IOException{ FileSystem fs = FileSystem.get(conf); fs.copyFromLocalFile(new Path(FILE_PROTOCOL+localPath),new Path(HDFS_PROTOCOL+hdfsPath)); fs.close(); } /** * 测试文件是否存在 * @param conf 配置信息 * @param path 文件路径 * @return * @throws IOException */ public boolean isExit(Configuration conf,String path)throws IOException{ FileSystem fs = FileSystem.get(conf); boolean exit = fs.exists(new Path(HDFS_PROTOCOL+path)); fs.close(); return exit; } /** * 删除文件 * @param conf org.apache.hadoop.conf.Configuration 配置信息 * @param path 要删除的文件路径 * @throws IOException */ public Boolean deleteFormHDFS(Configuration conf,String path) throws IOException { FileSystem fs = FileSystem.get(conf); boolean isDel = fs.deleteOnExit(new Path(HDFS_PROTOCOL+path)); fs.close(); return isDel; } /** * 把HDFS上面的文件下载到本地 * @param conf 配置信息 * @param hdfsPath hdfs的文件路径 * @param localPath 本地文件路径 * @throws IOException */ public void file2Loacl(Configuration conf,String hdfsPath,String localPath)throws IOException{ FileSystem fs = FileSystem.get(conf); fs.copyToLocalFile(new Path(HDFS_PROTOCOL+hdfsPath),new Path(FILE_PROTOCOL+localPath)); fs.close(); } /** * 创建hdfs目录 * @param conf 配置信息 * @param path 需要创建的目录路径 * @return 是否创建成功 * @throws IOException */ public Boolean mkHDFSDir(Configuration conf,String path)throws IOException{ FileSystem fs = FileSystem.get(conf); Path mypath = new Path(HDFS_PROTOCOL + path); boolean ismk = false; if(!fs.exists(mypath)) { ismk = fs.mkdirs(mypath); } fs.close(); return ismk; } /** * 查看当前目录内文件列表 * @param conf 配置信息 * @param path 查看的目录 * @return 文件状态数组 * @throws IOException */ public List lsHDFSDir(Configuration conf, String path) throws IOException{ List list = new ArrayList(); FileSystem fs = FileSystem.get(conf); FileStatus[] fileStatuses = fs.listStatus(new Path(HDFS_PROTOCOL + path)); for (FileStatus fileStatus:fileStatuses){ list.add(fileStatus.getPath().toString()); } fs.close(); return list; } } 测试用例 package test; import hdfs.HDFSUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.junit.Before; import org.junit.Test; import javax.ws.rs.core.Context; import java.io.IOException; import java.util.List; /** * Created by lws on 2017/8/7. */ public class MyHDFSTest { private HDFSUtils hdfsUtils = new HDFSUtils(); private Configuration conf = new Configuration(); @Before public void beforeBegining(){ conf.set("fs.defaultFS", "hdfs://xxx:9000/");//此处xxx为你的IP地址,如192.168.12.8 } @Test public void test_file2HDFS()throws IOException{ hdfsUtils.file2HDFS(conf,"D:\\BugReport.txt","/myuser2/1"); } @Test public void test_deleteFormHDFS()throws IOException{ hdfsUtils.deleteFormHDFS(conf,"/myuser/BugReport.txt"); } @Test public void test_isExit()throws IOException{ boolean is = hdfsUtils.isExit(conf,"/myuser/BugReport.txt"); System.out.print(is); } @Test public void test_file2Local()throws IOException{ hdfsUtils.file2Loacl(conf,"/myuser/BugReport.txt","D://test"); } @Test public void test_mkHDFSDir()throws IOException{ boolean a = hdfsUtils.mkHDFSDir(conf,"/myuser/liming"); System.out.print(a); } @Test public void test_lsHDFSDir()throws IOException{ List list = hdfsUtils.lsHDFSDir(conf,"/myuser2"); for (String file:list){ System.out.println(file); } } }

时间: 2024-11-03 06:58:03

HDFS Java代码进行增删改查的相关文章

java web实现增删改查后,应该学习哪些高级技术?

问题描述 java web实现增删改查后,应该学习哪些高级技术? 做了个小项目,实现了curd,想继续往缓存,并发,负载高级深入,请推荐一个详细的高级技术路线?最好有书 解决方案 javaweb深入浅出,不过这个方向研究,主要还是在公司里学的会更实用些 解决方案二: 多线程,Socket,I/O JSP.EL.JSTL,AJAX JavaScript,jQuery JSON,XML EJB(可忽略) 各种框架 ......太多了 解决方案三: 多线程,Socket,I/O JSP.EL.JSTL

java 数组的增删改查,用数组的方法实现

问题描述 java 数组的增删改查,用数组的方法实现 对一维数组进行增删该查:int[] num=new int[10]要求:用方法实现1输入10个整数存入数组2删除指定位置上的数3修改指定位置上的数4查找某个数的位置(下标)5查找最大值6查找最小值7去掉一个最大值和一个最小值,求平均值. 跪求各位大神能给小弟一个立案...好人一生平安!! 解决方案 http://blog.csdn.net/myoral/article/details/7445675 解决方案二: java 对象数组(增删改查

java除了增删改查还能干什么?

问题描述 java除了写增删改查,还能干什么啊?自己写了多半年的增删改查,感觉java除了写增删改查也写不出什么了,现在又要找工作,感觉很迷惑.求解惑!! 解决方案 换个工作吧,增删改查也就是最基础的东西,编程最大的价值在于实现有价值的思想:)跟语言没有关系,用java比较多只是因为java学习和使用相对简单解决方案二:现在Java的需求这么火爆,说明它可以做很多事情,至于你只知道这点,说明你的见识还很短浅.送你一句话:路漫漫而修远,吾将上下而求索.解决方案三: 解决方案四:增删改查是数据库的操

java对xml节点属性的增删改查实现方法_java

学习本文之前请先看我的另一篇文章JAVA对XML节点的操作可以对XML操作有更好的了解. package vastsum; import java.io.File; import java.io.FileWriter; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; i

javascript js 操作数组 增删改查的简单实现_javascript技巧

函数定义 Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; }; Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }

浅谈JavaScript中数组的增删改查_javascript技巧

数组的增加 •ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 •ary.unshift()  向数组开头添加元素,返回的是添加后新数组的长度,原有数组改变 • var ary=[1,2,3,4];   var res=ary.unshift(6);   console.log(res); ---->5   返回的是新数组的长度•ary.splice(n,m,x)从索引n开始删除m个元素,把新增的元素X放在索引n的前面,把删除的元素当成一个新数组返回,原有数

告别无止境的增删改查--Java代码生成器

转自:http://www.cnblogs.com/zhuYears/archive/2012/02/29/2373491.html 告别无止境的增删改查--Java代码生成器   有感于马上要做个比较大的业务系统,想到那无止境的增删改查.粘贴复制,顿时脑后升起一阵凉风.于是想到个找或者写一个Java代码的生成器,这样在正常开发进度下,也能余下更多的时间去做些别的事情. 闲话少说,首先总结下需求: 我需要的这个工具能够读取数据库表结构,通过对字段类型.名称等分析得到需要的各种变量,根据模板生成相

求jsp+javaBean连数据库实现单表增删改查功能的源程序代码

问题描述 代码简洁有注释更好,学习用.我的邮件是noryaland@gmail.com 解决方案 解决方案二:不能沉解决方案三:我们学校有这个我去给你找找一年多了不知道放哪里去了呵呵解决方案四:看来是没什么用被我删了不好意思解决方案五:求一份代码,用以研习.解决方案六:同求呵呵解决方案七:www.pudn.com解决方案八:数据库最好是oracle或sqlserver,因为我只懂这两种解决方案九:代码到,给分解决方案十:随便到网上找一下就有了解决方案十一:http://hi.baidu.com/

登录 增删改查-初学者求一个JSP对数据库进行登录并增删改查的代码

问题描述 初学者求一个JSP对数据库进行登录并增删改查的代码 A 注:(发送失败的短信的存储表格) create table A ( list_id VARCHAR2(40) not null, task_id VARCHAR2(40), content VARCHAR2(2000), presend_dt DATE, final_dt DATE, status NUMBER default 0, caller VARCHAR2(40), chargenum VARCHAR2(40), call