私が理解できないEclypseでmapreduceを使用してエラーが発生しました。mapreduceマップクラスの変数をインポート
いくつかのフィーチャをマッピングする前に、新しいフィーチャをマップするために使用する既知の特性(キーワード)を持つファイルをインポートする必要があります。私は最初にオーバーライドの後にそれをインポートしますが、私はたくさんの行を持っており、各マップに対してインポートするので、計算時間が非常に長くなります。 私は一度だけ、それをインポートし、クラスマップでは、その後、それを使用するクラスと@Override間に私の変数をインポートしようが、私は、次のエラーを取得:
私は後に取得public static class Map extends Mapper<LongWritable, Text, Text, Text > {
HashSet<String> word = new HashSet<String>();
BufferedReader BR = new BufferedReader(new FileReader(
new File("/home/test")));
String token;
while((token = BR.readLine()) != null){
word.add(token);
}
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
「トークン文字列;」エラー:;:トークン上の 構文エラー、ConstructorHeaderName代わり
と「公共のボイド」の後にエラーが期待トークン上 構文エラーは「」、{エラーは、「ながら」の後にこのトークン
後に予想されます: この行に複数のマーカーがあります - トークンの構文エラー "、"、;予想される - トークンの構文エラー "、"、;予想 - トークンの構文エラー「(」、;? 予想は - だから私の質問は、私はマップクラスではなく@Override前に、使用する変数をインポートすることが可能であると私はどのように行うことができます
を上書きしますその私が使用しようとする最初の答えでは?
"のパブリックstatic ..."
public static Set<String> newHashSet(String... strings) {
HashSet<String> words = new HashSet<String>();
BufferedReader BR = new BufferedReader(new FileReader(
new File("/home/test")));
String token;
while((token = BR.readLine()) != null){
words.add(mot);
}
return words;
}
しかし、再び、私はエラーが発生します。
私は私はこのライン で 複数のマーカーを取得し、私のファイルを読み込むしようとすると - リソースリーク - 未処理の例外型 にFileNotFoundException : 未処理の例外タイプのIOException
「BR」を閉じたことはなく、whileループで
私のファイルをインポートして、後でmapreduceタスクで条件として使用するためにデータを保存したいだけです。
を分散
あなたは完全なコードと完全なスタックトレースを投稿することができますか? – LppEdd
whileループはコンストラクタまたはメソッドの一部ではありません。そのため、このエラーが発生します。 – john16384