hadoop java访问_新手上路:关于用java接口来从hadoop的url读取数据的两种运行方法...

本文介绍了如何使用Java从Hadoop URL读取数据,包括通过Eclipse和在Hadoop上直接运行两种方法。文章提供了一个名为`URLTest2`的示例代码,展示了使用`FileSystem`和`IOUtils`读取HDFS文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创作品,转载需声明出处:

package cn.hadoop_01;

import java.io.IOException;

import java.io.InputStream;

import java.net.MalformedURLException;

import java.net.URL;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IOUtils;

public class URLTest2 {

static {

//设定一个静态代码块,jvm只会执行一次,java中的URL类的setURLStreamHandlerFactory方法

//方法:

//实际上创建了一个FsUrlStreamHandlerFactory的对象:

//FsUrlStreamHandlerFactory a =new

FsUrlStreamHandlerFactory();

//FsUrlStreamHandlerFactory该类的作用是:URL流处理工厂,具体的作用要使用Java.net.URL的

setURLStreamHandlerFactory()

//方法设置URLStreamHandlerFactory,这时需要传递一个

FsUrlStreamHandlerFactory。这个操作对一个jvm只能使用一次

//也就是说它要返回FsUrlStreamHandlerFactory的对象,再通过对象调用URL.setURLStreamHandlerFactory方法

//用URL.setURLStreamHandlerFactory方法将自己的URLStreamHandlerFactory对象注册到URL类中

URL.setURLStreamHandlerFactory(new

FsUrlStreamHandlerFactory());

}

public static void main(String[] args)throws Exception {

read2();

}

//写方法:关于怎么去读写一个输入的url数据。

//MalformedURLException, IOException抛出一些异常

public static void read2() throws MalformedURLException,

IOException{

//创建局部变量,调用方法,也是目标url,将来要t通过该类来在hadoop上打印输出

//注意目录:该目录是我在dfs上创建的一个根目录/,url目标是其下面的一个txt文件

String url = "/input/test2.txt";

//初始化InputStream类型的变量in,在Java

API中,读取对象的时候一般都是按照一个有序的字节流进行读取,这种读取方式称为流式读取;按照这种

//方式读取一个对象的字节流称作输入流(Input Stream),写入一个对象的字节流称作输出流(Output

Stream),至于输入和输出的目标以及源

//可以是控制台,同样可以是文件、网络连接甚至是内存块

InputStream in = null;

//调用Configuration类,创建一个对象,该类是专门说明hadoop的详细配置信息的类

Configuration conf = new Configuration();

//将配置信息用文件类deget得到

FileSystem fs = FileSystem.get(conf);

//开始写一个输入流,赋值输入流啦,得到配置信息的文件调用open方法打开一个路径对象,并给该路径对象赋值url路径,

in = fs.open(new Path(url));

//调用hadoop的简洁的IOUtils类的方法copyBytes在输入流和输出流之间复制数据并且可以直接执行close关闭

IOUtils.copyBytes(in, System.out,4096,false);

IOUtils.closeStream(in);

}

}

方法一:eclipse上运行,需要导入hadoop的jar包,直接在windows上解压hadoop,找到jar包即可,基本在其share文件夹内

只需要在测试所在的包下面新建一个文件夹conf,将hadoop的配置文件,hdfs-site.xml和core-site.xml添加进去直接编译即可。

方法二:在hadoop上运行

首先在eclipse上导出该类的jar包,并指定成主类(hadoop默认这个主类就可以直接编译运行了)

在指定的class目录下面执行jar的命令,hadoop

jar+文件名.jar即可。在linux上编译运行,使用xftp和xshell一起使用相当直观方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值