В Mahout существует команда для создания файла последовательности как bin/mahout seqdirectory -c UTF-8
-i <input address> -o <output address>
. Я хочу использовать эту команду как код API.
Как я могу использовать API-код файла последовательности Mahout?
Ответы (1)
Вы можете сделать что-то вроде этого:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
Path outputPath = new Path("c:\\temp");
Text key = new Text(); // Example, this can be another type of class
Text value = new Text(); // Example, this can be another type of class
SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf, outputPath, key.getClass(), value.getClass());
while(condition) {
key = Some text;
value = Some text;
writer.append(key, value);
}
writer.close();
Дополнительную информацию можно найти здесь и здесь
Кроме того, вы можете вызывать ту же самую функциональность, которую вы описали, из Mahout, используя org.apache.mahout.text.SequenceFilesFromDirectory
Тогда вызов выглядит примерно так:
ToolRunner.run(new SequenceFilesFromDirectory(), String[] args //your parameters);
ToolRunner
происходит от org.apache.hadoop.util.ToolRunner
Надеюсь, это помогло.
person
Julian Ortega
schedule
25.07.2012
Вы также можете посмотреть здесь, где код использует как SequenceFile Writer, так и Reader.
- person Julian Ortega; 25.07.2012
Каков путь
"appledata/apples"
в Path path = new Path("appledata/apples");
в здесь. Если это адресная книга?
- person Arash Hosseinabady; 26.07.2012
Это может быть связано с Файловой системой Hadoop (HDFS).
- person Julian Ortega; 26.07.2012
Итак, как я могу установить адрес для этого? У меня нет больше информации об этом.
- person Arash Hosseinabady; 26.07.2012
Тогда вам не нужна HDFS, просто укажите локальный путь, куда вы хотите записать вывод.
- person Julian Ortega; 26.07.2012
Установите выход! Я хочу дать ему текст файла входного адреса и сохранить его
sequence file
в выходной адрес. Я хочу установить как входной, так и выходной адрес.
- person Arash Hosseinabady; 26.07.2012
Я уже говорил, как это сделать. Вы бы сделали что-то вроде этого
ToolRunner.run(new SequenceFilesFromDirectory(), {"-c", "UTF-8", "-i", "c:\\inputPath", "-o", "c:\\outputPath"});
- person Julian Ortega; 26.07.2012
Я использую ваш код. Но этот код не добавляет новый ввод в файл последовательности. При каждом запуске этого кода создавайте новый файл последовательности.
- person Arash Hosseinabady; 07.08.2012
Конечно, он создает новый файл последовательности. Код, который я представил, создает новый
SequenceFile.Writer
каждый раз, когда вы его запускаете, поэтому он действительно перезапишет все, что присутствует (если выходной путь тот же). Если вы хотите добавить новые данные в существующий файл последовательности, вам нужно создать собственный код.
- person Julian Ortega; 08.08.2012