yongjian3311 发表于 2015-4-12 00:57:18

【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]
查看完整版本: 【HDFS】新手用Java读取HDFS并输出