2016-09-18 13 views
1

私はメインクラスの分散キャッシュのために以下のコードを使用しました。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が欠落しているように見えます

+0

を書き込むことができますか? –

+0

キャッシュとして使用したいhadoopディレクトリのtxtファイルの場所です。例えば。 /user/DeliveryStatusCodes.txt – cody123

答えて

1

FileReaderは、文字通りその当然のことながら、./someを探しています存在しません。

それとも、エイリアスをスキップする(これはオプションです)と `引数[2]`は何

new FileReader("/user/DeliveryStatusCodes.txt") 
+0

ありがとうございました。私はこれを前に試しましたが、どういうわけか、その時に働いていなかったので、今は働いています。 私も減速機に問題があります。マッパー出力を結合していません。 https://github.com/ragnar-lothbrok/hadoop-demo/blob/master/src/main/java/com/hadoop/intellipaat/UserSMSDeliveryJob.java減速で [キー、[値1、値1]] [key、[valeu2、value2]]しかし、これは[key、[value1、value2]]のようにすべきです。手伝っていただけませんか。 – cody123

+0

Reducerが動作していますか?あなたはあなたのsysoutを見ていますか? –

+0

はい私はデバッグを行い、sysoutも使用しました。コントロールがそこに来ている。 123 456 ######## [ユーザSMS〜001、ユーザSMS〜001] 456 123 ######## [ユーザー〜トム、ユーザー〜トム] 789 123 ######## [user-sms〜003、user-sms〜003] – cody123

関連する問題