编写JAVA代码读取Hadoop存储服务器文件
前言
?
网络上有关于JAVA API读取Hadoop的代码,但资料很杂乱,这边简单用例子记录下如何读取操作。
?
例子
?
package hadoop;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataInputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;/** * * @author Administrator */public class ReadHadoop { public static void main(String[] args) { Configuration conf = new Configuration(); conf.set("hadoop.job.ugi", "root,123"); //设置存储服务器的用户名,密码 String uri = "hdfs://192.168.4.27:9000/test/问题记录.txt"; FSDataInputStream in = null; try { //得到文件系统的实例 FileSystem fs = FileSystem.get(URI.create(uri), conf); //URI.create(uri)要创建 //通过FileSystem的open方法打开一个指定的文件 in = fs.open(new Path(uri)); //将InputStream中的内容通过IOUtils的copyBytes方法拷贝到System.out中 IOUtils.copyBytes(in, System.out, 4096, false); //seek到position 1 in.seek(1); //在执行一边拷贝输出工作 IOUtils.copyBytes(in, System.out, 4096, false); } catch (Exception ex) { System.out.println(ex.getMessage()); } finally { IOUtils.closeStream(in); } }}注意点
??? 1.设置存储服务器用户名,密码
??? 2.得到文件系统实例的URL的创建
?
1 楼 njchenyi 2010-01-26 我想问一下,你这个程序读取的文件,是保存在hdfs中什么路径的?我用hadoop fs -ls .列出的目录都是/user/当前登录用户名/......这样的
2 楼 yeminping 2010-01-26 njchenyi 写道我想问一下,你这个程序读取的文件,是保存在hdfs中什么路径的?
我用hadoop fs -ls .列出的目录都是/user/当前登录用户名/......这样的
文件夹多是由自己创建的
hdfs://192.168.4.27:9000/test/问题记录.txt test自己创建的文件夹 3 楼 lym6520 2010-01-26 njchenyi 写道我想问一下,你这个程序读取的文件,是保存在hdfs中什么路径的?
我用hadoop fs -ls .列出的目录都是/user/当前登录用户名/......这样的
这是你创建名称节点时指定的目录,可以通过配置文件进行修改。 4 楼 yangwn 2010-08-05 LZ,我想请教,hdfs://192.168.4.27:9000/test/问题记录.txt
文件名:问题记录.txt,是不是生成的,怎么样指定生成的文件名。一般都是part-0000