私はメインクラスの分散キャッシュのために以下のコードを使用しました。HadoopでDistributedCacheを使用しているときに例外を取得する
job.addCacheFile(new URI(args[2]));
以下のコードはreduceクラスです。
@Override
protected void setup(Reducer<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException {
super.setup(context);
URI[] paths = context.getCacheFiles();
if (paths.length > 0) {
loadDeliveryStatusCodes(paths[0].toString());
}
}
private void loadDeliveryStatusCodes(String file) {
String strRead;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("./some"));
while ((strRead = reader.readLine()) != null) {
String splitarray[] = strRead.split(",");
deliveryCodesMap.put(splitarray[0].trim(), splitarray[1].trim());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以下の例外が発生しています。
@@@@@@@@/user/DeliveryStatusCodes.txt 1
java.io.FileNotFoundException: ./some (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at com.hadoop.intellipaat.UserSMSDeliveryJob$USERNameSMSStatusCodeMapper.loadDeliveryStatusCodes(UserSMSDeliveryJob.java:95)
あなたの助けは私の一日を節約します。おかげさまで あなたが/user/DeliveryStatusCodes.txt
を持っていますが、あなたはそれなし
/user/DeliveryStatusCodes.txt#some
を持つべき瞬間.ATあなたargs[2]
の端から#some
が欠落しているように見えます
を書き込むことができますか? –
キャッシュとして使用したいhadoopディレクトリのtxtファイルの場所です。例えば。 /user/DeliveryStatusCodes.txt – cody123