次のコードを使用して、分散キャッシュにファイルを追加しています。
Configuration conf2 = new Configuration();
job = new Job(conf2);
job.setJobName("Join with Cache");
DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);
次に、ファイルをマッパーに読み込みます。
protected void setup(Context context)throws IOException,InterruptedException{
Configuration conf = context.getConfiguration();
URI[] cacheFile = DistributedCache.getCacheFiles(conf);
FSDataInputStream in = FileSystem.get(conf).open(new Path(cacheFile[0].getPath()));
BufferedReader joinReader = new BufferedReader(new InputStreamReader(in));
String line;
try {
while ((line = joinReader.readLine()) != null) {
s = line.toString().split("\t");
do stuff to s
} finally {
joinReader.close();
}
問題は、1 行しか読み取っていないことです。これは、キャッシュに入れていたファイルではありません。むしろ、cm9vdA==、または base64 のルートです。
他の誰かがこの問題を抱えていましたか、または私がどのように分散キャッシュを間違って使用しているかを確認しましたか? Hadoop 0.20.2 を完全に分散して使用しています。