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自带的方法。

  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/hxsyl/p/6137879.html
Copyright © 2011-2022 走看看