HDFSにデータをコピるケース
例えばシステム側で処理したデータを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 を参考にするのが良いかも