hadoop hdfs 上传下载文件
来源:互联网 发布:淘宝速捷运动专营店 编辑:程序博客网 时间:2024/05/22 00:57
上传文件:
package uploadfile;import java.io.*;import java.net.URI;import java.util.Date;import org.apache.hadoop.fs.*;import org.apache.hadoop.io.IOUtils;import org.apache.hadoop.conf.Configuration;public class UploadFile {public static void main(String[] args) {try{long begin = System.currentTimeMillis();System.out.println("*******************开始 时间 " + new Date() + "************************");String localSrc = args[0]; //D://cloudra cdh4.txtString dst=args[1];System.out.println(localSrc);System.out.println(dst);InputStream in = new BufferedInputStream(new FileInputStream(localSrc));//byte[] a=new byte[1024];//if(in.read(a)!=-1){//String as = new String(a);//System.out.println(as);//}Configuration conf = new Configuration();FileSystem fs = FileSystem.get(URI.create(dst),conf);OutputStream out = fs.create(new Path(dst));IOUtils.copyBytes(in,out,4096,true);long end = System.currentTimeMillis();long excutetime = end - begin ;System.out.println("*******************结束 时间 " + new Date() + "************************");System.out.println();System.out.println("====================");System.out.println("消耗时间为:" + excutetime + " 毫秒");System.out.println(" " + excutetime/1000 + "秒");System.out.println(" " + excutetime/60000 + "分");System.out.println("====================");System.out.println();}catch(Exception e){e.printStackTrace();}}}
下载文件:
package uploadfile; import java.io.BufferedOutputStream;import java.io.FileOutputStream;import java.io.OutputStream;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;/** * * * * * *Description: 查看Hadoop文件系统中的文件,利用hadoop FileSystem接口中的FSDataInputStream * * FSDataInputStream还具有流定位的能力,可以从文件的任意位置开始读取 * * * * @author charles.wang * * @created May 26, 2012 12:28:49 PM * */ public class DownloadFile { /** * @param args */ public static void main(String[] args) throws Exception{ //第一个参数传递进来的是Hadoop文件系统中的某个文件的URI,以hdfs://ip 的theme开头 String uri = args[0]; //读取Hadoop文件系统的配置 Configuration conf = new Configuration(); conf.set("Hadoop.job.ugi", "hadoop-user,hadoop-user"); //FileSystem是用户操作HDFS的核心类,它获得URI对应的HDFS文件系统 FileSystem fs = FileSystem.get(URI.create(uri),conf); FSDataInputStream in = null; try{ //实验一:输出全部文件内容 System.out.println("实验一:输出全部文件内容"); //让FileSystem打开一个uri对应的FSDataInputStream文件输入流,读取这个文件 in = fs.open( new Path(uri) ); //用Hadoop的IOUtils工具方法来让这个文件的指定字节复制到标准输出流上 //IOUtils.copyBytes(in, System.out,50,false); //输出到控制台上 OutputStream out = new BufferedOutputStream(new FileOutputStream("D:\\aassdcc.txt"));IOUtils.copyBytes(in, out,4096,true);System.out.println("Download success!!!"); ////实验二:展示FSDataInputStream文件输入流的流定位能力,用seek进行定位 //System.out.println("实验二:展示FSDataInputStream文件输入流的流定位能力,用seek进行定位"); //////假如我们要吧文件输出3次 ////第一次输入全部内容,第二次输入从第20个字符开始的内容,第3次输出从第40个字符开始的内容 //for (int i=1;i<=3;i++){ //in.seek(0+20*(i-1)); //System.out.println("流定位第 "+i+" 次:" ); //IOUtils.copyBytes(in, System.out,4096,false); ////} }catch(Exception e){e.printStackTrace();}finally{ IOUtils.closeStream(in); } } }
总结:
这里采用的方法是通过 FsUrlStreamHandlerFactory 实例调用URL 中的setURLStreamHandlerFactory 方法。由于JAVA 虚拟机只能用一次上述方法,因此 通常在静态方法中调用上述方法。这个限制意味首如果程序的其他组件--如不受你控制的第三方组件--已经声明了一个URL实例,你将无法再使用上述方法从Hadoop 中读取数据。
我们可以调用Hadoop 中简洁的IOUtils 类,并在finally子句中关闭数据流,同时也可以在输入流和输出流之间复制数据。copyBytes方法的最后两个参数,第一个用于设置复制的缓冲区大小,第二个用于设置复制结束后是否关闭数据流。
- hadoop hdfs 上传下载文件
- hadoop Hdfs文件上传下载
- hadoop学习笔记之hdfs的文件上传下载
- java 实现hadoop的hdfs文件的上传下载删除创建
- Hadoop之HDFS原理及文件上传下载源码分析(下)
- Hadoop之HDFS原理及文件上传下载源码分析(下)
- Hadoop Shell命令(基于linux操作系统上传下载文件到hdfs文件系统基本命令学习)
- Hadoop HDFS文件操作
- hadoop HDFS读写文件
- Hadoop文件系统之上传下载文件
- HDFS上传下载
- 云计算学习笔记004---hadoop的简介,以及安装,用命令实现对hdfs系统进行文件的上传下载
- Hadoop HDFS文件系统通过java FileSystem 实现上传下载等
- Hadoop读写Hdfs系统文件
- hadoop hdfs文件权限管理
- hadoop分析 - HDFS上传文件
- Hadoop之HDFS文件操作
- Hadoop之HDFS文件操作
- TomCat服务器,as3客户端,java服务器,外网访问
- iOS杂谈12—iOS面试题汇总(一)
- Linux下Tomcat死活找不到JSP页面中import指定类的解决方法
- ubuntu 12.10 软件源(163 Source)
- mysql5.5 启动报错:File './mysql-bin.index' not found (Errcode: 13)
- hadoop hdfs 上传下载文件
- grails连接mysql数据库
- Java 中import的用法,以及类的种类
- 项目三
- Time类的运算符重载
- JS事件目标event.target
- C#反编译工具Reflector使用方法,(支持VB、Delphi等)
- java poi+JFileChooser选择框导出excel文件
- linux的初始化函数(late_initcall和module_init)