• HDFS操作


    HDFS操作
    1.shell
    	1.1 创建目录
    		hadoop fs -mkdir 目录名(其中/为根目录)
    	1.2 遍历目录
    		hadoop fs -ls  目录名
    	1.3 删除目录
    		hadoop fs -rmr 目录名
    	1.4 修改目录
    		hadoop fs -mv  原目录   目标目录
    	1.5 上传文件
    		hadoop fs -put 文件原路径  文件HDFS路径
    	1.6 查看文件
    		hadoop fs -cat 文件名(需包含目录)
    	1.7 删除文件
    		hadoop fs -rmr 文件名
    	1.8 修改文件
    		hadoop fs -mv 源文件  目标文件
    	
    2.javaAPI
    	2.1 FileSystem类
    		1.1 写文件————create方法
    		1.2 读取文件————open方法
    		1.3 删除文件————delete方法
    		1.4 创建目录————mkdir方法
    		1.5 列出目录内容————listStatus方法
    		1.6 显示目录和文件元数据信息————getFileStatus方法
    	2.2 使用步骤
    		2.1 导入相关jar
    		2.2 得到Configuration对象
    		2.3 得到hdfs的URI对象
    		2.4 得到FileSystem对象
    		2.5 调用filesystem的相关方法
    	
    	
    	示例:
    		package testHadoop;
    
    		import java.io.File;
    		import java.io.FileInputStream;
    		import java.io.FileNotFoundException;
    		import java.io.FileOutputStream;
    		import java.io.IOException;
    		import java.net.URI;
    
    		import org.apache.hadoop.conf.Configuration;
    		import org.apache.hadoop.fs.FSDataInputStream;
    		import org.apache.hadoop.fs.FSDataOutputStream;
    		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 testJavaAPI {
    
    			public static void main(String[] args) throws Exception{
    				String url = "hdfs://hadoop:9000";
    				Configuration conf = new Configuration();
    				URI uri = new URI(url);
    				FileSystem fs = FileSystem.get(uri, conf);
    				
    				listPath(url, fs,"/");//遍历目录
    				
    				fs.mkdirs(new Path("/input/test"));//创建目录
    				System.out.println("创建文件夹成功!");
    				listPath(url, fs,"/input/test");
    				
    				fs.delete(new Path("/input/test"));//删除目录
    				listPath(url, fs, "/input");
    				
    				
    				//创建文件
    				FSDataOutputStream out = fs.create(new Path("/input/test.ini"));
    				out.writeUTF("This is first test data!");
    				out.flush();
    				out.close();
    				System.out.println("创建文件成功!");
    				listPath(url, fs, "/input");
    				
    				
    				//读取文件
    				FSDataInputStream in = fs.open(new Path("/input/test.ini"));
    				IOUtils.copyBytes(in, System.out, 1024);
    				IOUtils.closeStream(in);
    				System.out.println("读取文件成功!");
    				
    				
    				//删除文件
    				fs.delete(new Path("/input/test.ini"));
    				System.out.println("删除文件成功!");
    				listPath(url, fs, "/input");
    				
    				
    				//本地文件上传到服务器
    				File file = new File("d:/data.txt");
    				FileInputStream in_local = new FileInputStream(file);
    				FSDataOutputStream out_local = fs.create(new Path("/input/data.ini"));
    				int i;
    				while ((i=in_local.read())!= -1){
    					out_local.write(i);
    				}
    				out_local.flush();
    				in_local.close();
    				out_local.close();
    				listPath(url, fs, "/input");
    				
    			}
    
    			private static void listPath(String url, FileSystem fs ,String path) throws FileNotFoundException, IOException {
    				FileStatus[] status = fs.listStatus(new Path(path));
    				for(FileStatus s : status){
    					String isDir = s.isDir()?"目录":"文件";
    					System.out.println(s.getPath().getName() + " " + isDir);
    				}
    				System.out.println("遍历文件夹成功");
    			}
    			
    		}
    
    
    	
    

      

  • 相关阅读:
    java学习之旅(一):BOS项目使用的技术以及开发环境
    spring手动回滚
    tomcat下配置多端口,多项目
    centos7安装Mysql5.6
    windows phone7 下 Silverlight 异步读取网络图片
    Sencha Touch 本地化存储配置
    LCD1602显示接收的串口通讯字串
    QML 怎么在gridview中用Index定位? 怎么在代理中设置背景?
    89C52定时/计数器
    QML JSON 展示
  • 原文地址:https://www.cnblogs.com/ciade/p/5006931.html
Copyright © 2020-2023  润新知