基于JAVA的HDFS文件操作(里面有java的HDFS文件操作的完整代码)

(1)向HDFS上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件;

  • 相关代码如下
	public int FileUpload() throws IOException{
		FileSystem fs=FileSystem.get(conf);	
		if(!fs.exists(new Path(dst_path))){//HDFS判断是否存在
		    System.out.println("file not exist");
			fs.copyFromLocalFile(false, new Path(scr_filename), new Path(dst_path));//不存在
		}else{//存在
			System.out.print("the file"+scr_filename+" exists on HDFS,do you want (a)ppend or (o)verwrite?");
			Scanner input=new Scanner(System.in);
			String s=input.next();		
			if(s.equalsIgnoreCase("o")){
				System.out.println("overwrite");
				fs.copyFromLocalFile(false, true, new Path(scr_filename), new Path(dst_path));
			}else if(s.equalsIgnoreCase("a")){
				System.out.println("append");					
				FileInputStream in=new FileInputStream(scr_filename);		
				FSDataOutputStream app_f=fs.append(new Path(dst_path));	
				byte[] data=new byte[1024];
		    	int read=-1;   	
		    	while((read=in.read(data))>0){
		    		app_f.write(data,0,read);
		    	}		    	
		    	in.close();
			}	
			input.close();
		}
		return 0;
	}

elipse中的代码截图效果
在这里插入图片描述
我创建了append.txt和secondwork.txt(secondwork.txt里面的内容是mango,hello!)
这里显示我创建的append.txt的内容
在这里插入图片描述
运行结果如下
在这里插入图片描述
我选择了“a” append,就是将“/usr/local/hadoop/append.txt”追加到原有文件secondwork.txt中,如图所示
在这里插入图片描述

(2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名;

  • 相关代码如下
public int download(String HDFS_scr_path,String Local_dst_path) throws IOException{	
		File dstFile=new File(Local_dst_path+HDFS_scr_path);		
		FileSystem  fs=FileSystem.get(conf);	
		if(!dstFile.exists()){
			fs.copyToLocalFile(new Path(HDFS_scr_path), new Path(Local_dst_path));		
		}
		else{
			fs.rename(new Path(HDFS_scr_path), new Path(HDFS_scr_path+"001"));
			fs.copyToLocalFile(new Path(HDFS_scr_path+"001"), new Path(Local_dst_path));
			fs.rename(new Path(HDFS_scr_path+"001"), new Path(HDFS_scr_path));
		}		
		return 0;
	}

elipse中的代码截图效果
在这里插入图片描述
将HDFS中的secondwork.txt下载到usr//local//hadoop路径下的filework.txt中,cat命令查看filework.txt中的内容如图所示
在这里插入图片描述

(3)将HDFS中指定文件的内容输出到终端中;

  • 相关代码如下
public int PrintFile(String HDFS_src_path) throws IOException{
        FileSystem fs=FileSystem.get(co
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值