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

  • 相关阅读:
    快速切题 sgu102.Coprimes 欧拉函数 模板程度 难度:0
    快速切题 sgu104. Little shop of flowers DP 难度:0
    poj 1163 The Triangle 搜索 难度:0
    sgu101 欧拉路径 难度:1
    快速切题 poj3414 Pots
    xml学习
    linux
    常用排序算法
    C++面试题目
    软件工程的一些问题
  • 原文地址:https://www.cnblogs.com/hxsyl/p/6137879.html
Copyright © 2011-2022 走看看