一、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自带的方法。
时间: 2024-11-01 23:20:00