4-HDFS API
1 读取数据
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.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;public class ReadFile {public static void main(String[] args) throws IOException{String uri = "hdfs://localhost:9000/user/saligia/input/mac";Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(uri), conf);InputStream in = null;try{in = fs.open(new Path(uri));// open 的是一个 FSDataInputStream 对象, 这个对象继承自 DataInputStream/** public class FSDataINputStream extends DataINputStream* implements Seekable, PositionedReadable{** }*/IOUtils.copyBytes(in, System.out, 4096, false);BufferedReader readText = new BufferedReader(new InputStreamReader(in));while(readText.ready()){System.out.println(readText.readLine());}}catch(IOException e){//e.printStackTrace();}}
}
2. 写入数据
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.Progressable;public class WriteFile {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString uriHdfs = "hdfs://localhost:9000/user/saligia/input/writejava";String uriLocal = "./WriteFile.java";Configuration conf = new Configuration(); // 配置文件FileSystem hdfs = FileSystem.get(URI.create(uriHdfs), conf); // 打开 HDFSFileSystem lofile = FileSystem.get(URI.create(uriLocal), conf); // 打开本地文件InputStream fin = lofile.open(new Path(uriLocal)); // 打开本地文件读OutputStream fout = hdfs.create(new Path(uriHdfs), new Progressable(){ // 打开 HDFS 写public void progress(){System.out.print(".");}});/** create 返回的时 FSDataOutputStream* public class FSDataOutputStream extends DataOutputStream implements Syncable{* }** HDFS 只允许对一个对以打开的文件顺序写入* 在现有文件末尾追加数据*/BufferedReader fread = new BufferedReader(new InputStreamReader(fin));BufferedWriter fwrite = new BufferedWriter(new OutputStreamWriter(fout));try{while(fread.ready()){fwrite.write(fread.readLine());fwrite.write("\n");}}catch(IOException e){//e.printStackTrace();}finally{fread.close();fwrite.close();}}
}
3. MakeFile
import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class MakeDir {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString dirUri = "hdfs://localhost:9000/user/saligia/tmp";Configuration conf = new Configuration();FileSystem file = FileSystem.get(URI.create(dirUri), conf);// 创建目录System.out.println(file.mkdirs(new Path(dirUri)));}}
4. GlobFile
import java.io.IOException;
import java.net.URI;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 org.apache.hadoop.fs.PathFilter;public class GlobFile {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString fileUri = "hdfs://localhost:9000/user/saligia/*";Configuration conf = new Configuration();FileSystem file = FileSystem.get(URI.create(fileUri), conf);FileStatus[] statusList = file.globStatus(new Path(fileUri), new PathFilter(){@Overridepublic boolean accept(Path arg0) {FileStatus st = null;try {st = FileSystem.get(URI.create(arg0.toString()), conf).getFileStatus(arg0);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(st.isDir()){return true;}return false;}});for(FileStatus it : statusList){System.out.println(it.getPath());}}}
5. FileStatus
import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class ShowFileStatus {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString fileUri = "hdfs://localhost:9000/user/saligia/input/mac";Configuration conf = new Configuration();FileSystem file = FileSystem.get(URI.create(fileUri), conf);FileStatus stat = file.getFileStatus(new Path(fileUri));// 获取路径System.out.println("Path : " + stat.getPath());// 判断是否时目录System.out.println("isDir : " + stat.isDir());// 判断长度System.out.println("Len : " + stat.getLen());// 判断块大小System.out.println("Blocksize :" + stat.getBlockSize());// 所有者System.out.println("Owner : " + stat.getOwner());// 返回权限System.out.println("Permission : " + stat.getPermission());if(stat.isDir()){FileStatus[] list = file.listStatus(new Path(fileUri));for (FileStatus it : list){System.out.println(it.getPath());}}}}
6.DaleteFile
import java.io.IOException;
import java.net.URI;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;public class DeleteFile {public static void main(String[] args) throws IOException{String fileUri = "hdfs://localhost:9000/user/saligia/tmp";Configuration conf = new Configuration();FileSystem file = FileSystem.get(URI.create(fileUri), conf);file.delete(new Path(fileUri), true);}
}
4-HDFS API相关推荐
- hadoop: hdfs API示例
利用hdfs的api,可以实现向hdfs的文件.目录读写,利用这一套API可以设计一个简易的山寨版云盘,见下图: 为了方便操作,将常用的文件读写操作封装了一个工具类: 1 import org.apa ...
- JAVA操作HDFS API(hadoop)
http://www.cnblogs.com/alisande/archive/2012/06/06/2537903.html HDFS API详解 Hadoop中关于文件操作类基本上全部是在&quo ...
- 阿里云使用idea通过hdfs api来上传文件时出现could only be written to 0 of the 1 minReplication nodes.错误
问题描述: 使用阿里云服务器,在本地windows电脑上使用idea进行hdfs api操作来上传文件时出现错误如下: org.apache.hadoop.ipc.RemoteException(ja ...
- 怎样在hdfs上创建多级目录文件夹_【HDFS API编程】第一个应用程序的开发-创建文件夹...
/** * 使用Java API操作HDFS文件系统 * 关键点: * 1)创建 Configuration * 2)获取 FileSystem * 3)...剩下的就是 HDFS API的操作了 * ...
- hadoop学习笔记(八):Java HDFS API
hadoop学习笔记(八):Java HDFS API 阅读目录 一.使用HDFS FileSystem详解 回到顶部 一.使用HDFS FileSystem详解 HDFS依赖的第三方包: hadoo ...
- 使用HDFS API实现hadoop HDFS文件系统的基本操作
下面介绍使用hadoop的HDFS分布式文件系统的java API实现基本的文件操作,比如:创建文件.修给文件.创建目录或者文件夹.从本地系统上传文件到HDFS系统中.从HDFS文件系统中下载文件到本 ...
- HDFS API编程之副本系数
Hadoop 版本:hadoop-2.6.0-cdh5.15.1 虽然在hdfs-site.xml中设置了副本数量: <property><name>dfs.replicati ...
- Hadoop入门(三)HDFS API
一..HDFS 常用类 Configuration 配置 Path 路径 FileSystem 文件系统 Stream 流 IOUtils IO工具 API文档 二.类解析 (1)Confi ...
- hdfs API命令操作京东云主机,采坑记录
代码 public class HDFSApp { public static final String HDFS_PATH="hdfs://hadoop001:9000"; Co ...
- HDFS API 操作之文件下载、文件删除、文件名更改
文件下载 @Test public void testCopyToLocalFile() throws Exception {//1 获取文件系统Configuration conf = new Co ...
最新文章
- 十二张图详解淘宝架构变迁
- Vagrant 管理部署 VirtualBox (推荐使用)
- zabbix-server启动报错解决
- 让你的VB6.0支持滚轮操作
- 理解 Delphi 的类(十一) - 深入类中的方法[8] - 抽象方法与抽象类
- 【Ubuntu】Windows硬盘安装Ubuntu14.04
- android用qq浏览器打开微信网页版,QQ浏览器怎么打开微信小程序?
- Tahoma Arial Verdana三种字体的选择
- 飞信死了,运营商也快死了
- 博图软件的C语言脚本,wincc v13 博图软件里如何写脚本程序
- SAP HR系统2019年五一节假日调整
- Cg Programming In Unity Specular Highlights (Wiki翻译自用)
- 19-Python基础知识学习-----迭代器与生成器
- 开源中国部分源代码分享
- Linux中shell的ls,linux系统shell中ls指令
- 有什么手写文字识别软件?这些软件值得收藏
- 小米电视4a刷鸿蒙,小米电视4A精简系统教程
- 利用Python进行性能测试(上)
- bootstrap实战经验
- 渲染(render)和着色(shading)