栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HDFS入门(三)

HDFS入门(三)

五、HDFS接口 (一)HDFS命令行接口

HDFS命令行接口作为了解,在这里不再赘述

(二)JAVA API接口

使用URL访问hdfs

1)怎么访问?
java.net.URL可以访问文件系统,但其默认支持http协议,不支持hdfs协议

2)如何支持?
URL.setURLStreamHandlerFactory()方法中,添加hdfs协议对象FsUrlStreamHandlerFactory即可
即java.net.URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory())

3)访问哪里?
hdfs文件系统的根目录是:hdfs://192.168.170.133:9000
 

public static void main(String[] args) throws Exception {	
	URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
	String url = "hdfs://192.168.170.133:9000/input/2.txt";		
	InputStream in = new URL(url).openStream();		
	IOUtils.copyBytes(in, System.out, 4096);
}

 使用FileSystem读文件
1)hadoop的FileSystem类与hdfs进行交互
FileSystem是抽象类,不能直接new(),通过get()得到具体的实现类,即:
FileSystem fs = FileSystem.get();

2)hadoop的Configuration类用来表示配置,即:
Configuration cfg = new Configuration();
cfg.set("fs.default.name", "hdfs://192.168.170.133:9000");

3)hadoop的Path类用来表示hdfs中的路径,即:
Path p = new Path("hdfs:/input/2.txt");

4)相关类
package com.qst.test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public static void readFile() throws IOException {
//	1、定义配置对象
	Configuration cfg = new Configuration();
//	2、设置配置对象的HDFS访问地址
	cfg.set("fs.default.name", "hdfs://192.168.170.133:9000");
//	3、根据配置对象定义FileSystem实例
	FileSystem fs = FileSystem.get(cfg);
//	4、定义文件路径
	Path p = new Path("hdfs:/input/2.txt");
//	5、使用FileSystem实例打开文件
	InputStream in = fs.open(p);	
//	6、读取文件数据
	IOUtils.copyBytes(in, System.out, 4096, false);
//	7、关闭文件
	IOUtils.closeStream(in);
}


使用FileSystem写文件

public static void createFile() throws IOException {		
	Configuration cfg = new Configuration();
	cfg.set("fs.default.name", "hdfs://192.168.170.133:9000");
	FileSystem fs = FileSystem.get(cfg);
//	1、定义写入文件的路径
	Path p = new Path("hdfs:/input/2.txt");
//	2、定义输出流
	FSDataOutputStream out = fs.create(p);
//	3、写数据
	out.write("你好!欢迎使用HDFS".getBytes());
//	4、关闭写
	out.close();
//	5、关闭文件系统
	fs.close();		
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号