HDFS操作

HDFS-- java代码读取,写入文件

hdfs对文件的写入过程大致流程:

  1. 设置配置信息

Configuration的配置主要是知道分布式文件系统的地址,知道文件往哪里写入,从哪里读取。也就是这一代码块
Configuration conf = new Configuration(); conf.set("fs.defaultFS","hdfs://Master:9000"); conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");

  1. FileSystem

自我理解:就好比windows系统的文件管理系统吧,不过与Windows文件管理系统略微有所不同的是,FileSystem既可以管理本地的文件,也可以管理其他节点的文件。

  1. 对文件进行操作
  • 写入文件操作流程

首先,如果要写入文件,那么你首先就必须要新建一个文件,也就是fs.create这个方法,只有创建了文件才可以将内容写进去
第二,写入内容。将内容转换成二进制文件写入
byte[] buff = content.getBytes(); FSDataOutputStream os = fs.create(new Path(file)); os.write(buff,0,buff.length);
操作完之后,关闭输出流,关闭文件系统

package com.jxufe.edu.xzy.hdfs;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class TestHdfs {

	public static void main(String[] args) throws IllegalArgumentException, IOException {
		// TODO Auto-generated method stub
		Configuration conf = new Configuration();
		//conf加载项目当中的hdfs-site.xml文件和core-site.xml文件 
		conf.set("fs.defaultFS","hdfs://Master:9000");//这里配置信息要与自己当前配置信息一致
        conf.set("fs.hdfs.impl","org.apache.hadoop.hdfs.DistributedFileSystem");

		
		//hdfs读文件操作
		String filename = "test3.txt";//写入文件
		String filedir = "/usr/hadoop/";//写入文件目录
		String file = filedir + filename;
		FileSystem fs = FileSystem.get(conf);
		if(fs.exists(new Path(file))){
			System.out.println(("文件存在"));
			readHdfsFile(file,conf);
		}else{
			System.out.println("文件不存在");
			writeToHdfs(file,"Integrate the content last time!",conf);
		}
		fs.close();
	}
	
	
	public static void readHdfsFile(String file, Configuration conf) throws IOException{
		FileSystem fs = FileSystem.get(conf);
		
		FSDataInputStream getIt = fs.open(new Path(file));
		BufferedReader bd = new BufferedReader(new InputStreamReader(getIt));
		String content = bd.readLine();
		System.out.println(file + ":"+content);
		bd.close();
		fs.close();
	}
	
	public static void writeToHdfs(String file, String content, Configuration conf) throws IllegalArgumentException, IOException{
		FileSystem fs = FileSystem.get(conf);
		//hdfs 写文件操作
		byte[] buff = content.getBytes();					//要写入的内容
		FSDataOutputStream os = fs.create(new Path(file));  //在hdfs中创建一个filename的文件
		os.write(buff,0,buff.length);						//写入数据
		System.out.println("Create:"+file+" successful");
		os.close();//关闭文件
		fs.close();//关闭hdfs
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值