Поскольку в приведенном выше коде отсутствуют операторы импорта и т. Д., Необходимые для его компиляции, здесь приведена более полная версия, которая работает из командной строки для чтения и вывода выходных данных файла dict
dumpdict.java:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
class DumpDict {
public static void main(String[] args) {
try {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
SequenceFile.Reader read = new SequenceFile.Reader(fs, new Path(args[0]), conf);
IntWritable dicKey = new IntWritable();
Text text = new Text();
// HashMap dictionaryMap = new HashMap();
while (read.next(text, dicKey)) {
// dictionaryMap.put(Integer.parseInt(dicKey.toString()), text.toString());
System.out.println(dicKey.toString()+" "+text.toString());
}
read.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
Я обнаружил, что необходимо явно указать java, где находятся все файлы jar:
export CLASSPATH=`find /path/to/mahout /usr/share/java -name '*.jar' | perl -ne 'chomp; push @jars, $_; END { print "\".:",(join ":",@jars),"\$CLASSPATH\"\n"; }'`
Компилировать так:
javac dumpdict.java
Выполнить так:
java -cp .:$CLASSPATH DumpDict {path to dict}
(Это может быть излишним для людей, которые используют Java, но это может сэкономить время для тех из нас, кто не использует его так часто.)