【HDFS】新手用Java读取HDFS并输出
别人看来再简单的事情,对于新手来说都是举步维艰啊{:soso_e118:}环境和版本:
[*]Eclipse Version: Luna Service Release 2 (4.4.2)
[*]Hadoop Version: Hadoop 2.5.0
引入Hadoop所需的包:(我的Hadoop根目录在/opt/hadoop/hadoop-2.5.0)
[*]common包:Hadoop基础包(必须)
[*]其他剩下的每一个文件夹下的当前目录下的jar包(必须)
新建工程代码:
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class CPT3_test1 {
static {
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
}
public static void main(String[] args) {
InputStream in = null;
try {
//这步容易出错,请核对端口号和文件目录
in = new URL("hdfs://master:9000/input/test1.txt").openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeStream(in);
}
}
} 保存运行。
其中端口号要注意,因为大部分人配置core-site.xml的时候配置的是9000端口而Hadoop默认的是8020端口号,请查看自己对应配置。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/hadoop-2.5.0/tmp</value>
</property>
</configuration>
页:
[1]