HDFSにデータをコピるケース

2013-05-17T00:00:00+00:00 Hadoop Java

例えばシステム側で処理したデータをHadoopで処理するためにはデータをうpしないといけなかったりする(InputFormatによる)

でhadoop fs putとか使わずにそれをやるには

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class Client {
    public static void main(String[] args) {
        Configuration conf = new Configuration();
        conf.setStrings("fs.default.name", "hdfs://localhost:9000");

        Path path = new Path("/user/kinjouj/input/data.txt");

        try(FileSystem fs = FileSystem.get(conf);) {
            fs.copyFromLocalFile(false, new Path("/path/to/data.txt"), path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

org.apache.hadoop.fs.FileSystemでグダグダすれば可能。でこのケースだとローカルファイルをHDFS上にうpするっていうのだけやってるけど、IOUtils.copyBytesとか辺り使えばストリームなのをコピーしてHDFS上にうpしたり出来る模様

http://d.hatena.ne.jp/kikumoto/20090609/1244557489 を参考にするのが良いかも

ActionBarSherlockとSlidingMenuなテスト Androidのテストカバレッジレポートでフィルター