zoukankan      html  css  js  c++  java
  • Hdfs常用操作

    一、linux

    rm是删除,不是del

    二、常用操作

    package hdfs;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URI;
    import java.net.URISyntaxException;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.IOUtils;
    import org.junit.Before;
    import org.junit.Test;
    //那么多test,指向运行一个 那么选种方法明后 在junit
    
    public class HDFSDemo {
    	FileSystem fs = null;
    
    	@Before
    	public void init() throws Exception {
    		
    		URI uri = new URI("hdfs://192.168.58.180:8020/");
    		Configuration conf=new Configuration();
    		//这个是抽象类
    		fs = FileSystem.get(uri, conf, "hxsyl");
    	}
    	@Test 
    	public  void downLoadHdfs() throws Exception {
    		fs.copyToLocalFile(new Path("/in/1.txt"),new Path("d:/TestHDFS/2.txt"));
    	}
    	@Test
    	public void delHDFS() throws Exception, Throwable {
    		//true表示地柜删除
    		boolean flag = fs.delete(new Path("/1.txt"), true);
    		System.out.println(flag);
    		
    	}
    	@Test
    	public void mkdirHDFS() throws Exception, Throwable {
    		boolean flag = fs.mkdirs(new Path("/testHDFS"));
    		System.out.println(flag);
    	}
    	
    	@Test
    	public void uploadHDFS() throws Exception {
    		//一般来说win下的用户和linux下用户不一样,根据hdfs的权限机智,无法写成功,
    		//要么dfs.permissions false  这样一般不行
    		//要常穿的hdfs dfs -chmod 777  主要是改了其他用户权限
    		//或者伪装成用户
    		InputStream is = new FileInputStream("d:/TestHDFS/1.txt");
    		//指向hdfs  不用new
    		OutputStream os = fs.create(new Path("/1.txt"));
    		IOUtils.copyBytes(is, os, 4096,true);
    	}
    	public static void main(String[] args) throws Exception{
    		
    		FileSystem fs = null;
    		URI uri = new URI("hdfs://192.168.58.180:8020/");
    		Configuration conf=new Configuration();
    		//这个是抽象类
    		fs = FileSystem.get(uri, conf);
    		
    		// TODO Auto-generated method stub
    		
    		//没有类似的get方法
    		//虽然这个文件存在 也要new
    		Path path = new Path("/Movielens1M/movies.dat");
    		InputStream is = fs.open(path);
    		//必须写到文件 否则  
    		//java.io.FileNotFoundException: E:AAA(拒绝访问。)  
    		OutputStream os = new FileOutputStream("D:\TestHDFS\1.txt");
    		//拷贝完成关闭   默认的buffer都是4096
    		IOUtils.copyBytes(is, os, 4096, true);
    
    	}
    
    }
    

      上传下载除了输出输出流意外,然后IOUtils.copyBytes;就是用fs自带的方法。

  • 相关阅读:
    关于yyyy-MM-dd格式日期字符串,解析成LocalDateTime遇到的问题
    idea设置代码提示不区分大小写
    不错的Django技术网址
    Django-Rest-Framework 教程: 快速入门
    Djanto static静态文件配置
    Html5 touch event
    Zepto.js touch模块深入分析
    Python单元测试框架之pytest -- fixtures
    Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
    Nginx基本配置、性能优化指南
  • 原文地址:https://www.cnblogs.com/hxsyl/p/6137879.html
Copyright © 2011-2022 走看看