Java 封装 HDFS API 操作
代码下载地址:点击下载
一:环境介绍
二:操作包括
创建文件夹 mkdir(folder);
列出所有文件夹 ls(folder);
递归列出所有文件夹 lsr(folder);
上传文件 put(local, folder);
下载文件 get(folder,local1);
删除文件 rm(folder);
显示文件 cat(folder);
三:代码演示
package user_thing_tuijian; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; 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.Path; import org.apache.hadoop.io.IOUtils; public class hdfsGYT { private static final String HDFS = "hdfs://127.0.0.1:9000/"; public hdfsGYT(String hdfs, Configuration conf ){ this.hdfsPath = hdfs; this.conf = conf; } public hdfsGYT() { // TODO Auto-generated constructor stub } private String hdfsPath; private Configuration conf = new Configuration() ; public static void main(String[] args) throws IOException, URISyntaxException{ hdfsGYT hdfsgyt = new hdfsGYT(); String folder = HDFS + "mr/groom_system/small2.csv"; String local = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian/small2.csv"; String local1 = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian"; //判断某个文件夹是否存在 //hdfsgyt.isExist(folder); //创建文件夹 //hdfsgyt.mkdir(folder); //删除文件夹 //hdfsgyt.rmr(folder); //列出所有文件夹 //hdfsgyt.ls(folder); //递归列出所有文件夹 //hdfsgyt.lsr(folder); //上传文件 //hdfsgyt.put(local, folder); //下载文件 //hdfsgyt.get(folder,local1); //删除文件 //hdfsgyt.rm(folder); //显示文件 //hdfsgyt.cat(folder); } //显示文件 private void cat(String folder) throws IOException, URISyntaxException { // 与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); FSDataInputStream fsdis = null; System.out.println("cat: " + folder); try { fsdis =fs.open(path); IOUtils.copyBytes(fsdis, System.out, 4096, false); } finally { IOUtils.closeStream(fsdis); fs.close(); } } //删除文件 private void rm(String folder) throws IOException, URISyntaxException { //与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); if(fs.deleteOnExit(path)){ fs.delete(path); System.out.println("delete:" + folder); }else{ System.out.println("The fiel is not exist!"); } fs.close(); } //下载文件 private void get(String remote, String local) throws IllegalArgumentException, IOException, URISyntaxException { // 建立联系 FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration()); fs.copyToLocalFile(new Path(remote), new Path(local)); System.out.println("Get From : " + remote + " To :" + local); fs.close(); } //上传文件 private void put(String local, String remote) throws IOException, URISyntaxException { // 建立联系 FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration()); fs.copyFromLocalFile(new Path(local), new Path(remote)); System.out.println("Put :" + local + " To : " + remote); fs.close(); } //递归列出所有文件夹 private void lsr(String folder) throws IOException, URISyntaxException { //与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); //得到该目录下的所有文件 FileStatus[] fileList = fs.listStatus(path); for (FileStatus f : fileList) { System.out.printf("name: %s | folder: %s | size: %d\n", f.getPath(), f.isDir() , f.getLen()); try{ FileStatus[] fileListR = fs.listStatus(f.getPath()); for(FileStatus fr:fileListR){ System.out.printf("name: %s | folder: %s | size: %d\n", fr.getPath(), fr.isDir() , fr.getLen()); } }finally{ continue; } } fs.close(); } //列出所有文件夹 private void ls(String folder) throws IOException, URISyntaxException { //与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); //得到该目录下的所有文件 FileStatus[] fileList = fs.listStatus(path); for (FileStatus f : fileList) { System.out.printf("name: %s | folder: %s | size: %d\n", f.getPath(), f.isDir() , f.getLen()); } fs.close(); } //删除文件夹 private void rmr(String folder) throws IOException, URISyntaxException { //与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); fs.delete(path); System.out.println("delete:" + folder); fs.close(); } //创建文件夹 public void mkdir(String folder) throws IOException, URISyntaxException { //与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); if (!fs.exists(path)) { fs.mkdirs(path); System.out.println("Create: " + folder); }else{ System.out.println("it is have exist:" + folder); } fs.close(); } //判断某个文件夹是否存在 private void isExist(String folder) throws IOException, URISyntaxException { //与hdfs建立联系 FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); if(fs.exists(path)){ System.out.println("it is have exist:" + folder); }else{ System.out.println("it is not exist:" + folder); } fs.close(); } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用Spark框架中文分词统计
技术 Spark+中文分词 算法 对爬取的网站文章的关键词进行统计,是进行主题分类,判断相似性的一个基础步骤。例如,一篇文章大量出现“风景”和“酒店”之类的词语,那么这篇文章归类为“旅游”类的概率就比较大。而在关于“美食”的文章中,“餐厅”和“美味”等词语出现的频率一般也会比较大。 分词使用语言云http://www.ltp-cloud.com实现对一段中文先进行分词,然后通过Spark streaming 对分词后的内容进行词频统计。 通过ltp-cloud进行中文分词 目前国内有不少科研机构开发了中文分词系统,例如中科院、哈工大、科大讯飞等,本次体验的是哈工大的语言云。 Rest API调用, 例如(YourAPIKey替换成你的APIKey): curl -i"http://api.ltp-cloud.com/analysis/?api_key=YourAPIKey&text=认知商业需要认知技术&pattern=ws&format=plain" HTTP/1.1 200 OK Server: nginx Date: Tue, 22Mar 2016 14:...
- 下一篇
Cloudera Kudu是什么?
Cloudera Kudu是什么? kudu是cloudera在2012开始秘密研发的一款介于hdfs和hbase之间的高速分布式列式存储数据库。兼具了hbase的实时性、hdfs的高吞吐,以及传统数据库的sql支持。作为一款实时、离线之间的存储系统。定位和spark在计算系统中的地位非常相似。如果把mr+hdfs作为离线计算标配,storm+hbase作为实时计算标配。spark+kudu有可能成为未来最有竞争力的一种架构。 也就是kafka -> spark -> kudu这种架构,未来此架构是否会风靡,暂且不言论。让我们拭目以待吧! Kudu是Cloudera开源的新型列式存储系统,是Apache Hadoop生态圈的新成员之一(incubating),专门为了对快速变化的数据进行快速的分析,填补了以往Hadoop存储层的空缺。 Kudu是ToddLipcon@Cloudera带头开发的存储系统,其整体应用模式和HBase比较接近,即支持行级别的随机读写,并支持批量顺序检索功能。 Kudu 是一个针对 Apache Hadoop 平台而开发的列式存储管...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度