JavaでHdoopファイルシステムを操作するサンプルプログラム
Hadoopファイルシステムにsitemap_startnews24ファイルを置く
ルートディレクトリ:
[root@hadoop local]# touch sitemap_startnews24
[root@hadoop local]# vi sitemap_startnews24
[root@hadoop local]# hadoop fs -put sitemap_startnews24 /
Javaコード:
package hadoop.jack.javacallhadoop;
import java.io.InputStream;
import java.net.URL;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
import org.apache.hadoop.io.IOUtils;
public class Hadoop_startnews24{
public static String HDFS_PATH="hdfs://hadoop:9000/sitemap_startnews24″;
/**
* @param args
*/
public static void main(String[] args) throws Exception{
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
final URL url =new URL(HDFS_PATH);
InputStream in = url.openStream();
IOUtils.copyBytes(in, System.out, new Configuration());
}
}
説明:
1.setURLStreamHandlerFactory
URL クラスに SumURLStreamHandlerFactory を登録して、sum プロトコルを使えるようにします。
2.FsUrlStreamHandlerFactory
Factory for URL stream handlers. There is only one handler whose job is to create UrlConnections. A FsUrlConnection relies on FileSystem to choose the appropriate FS implementation. Before returning our handler, we make sure that FileSystem knows an implementation for the requested scheme/protocol.
3.openStream()
このURLへの接続をオープンし、その接続から読み込みを行うためのInputStream を返します。