Я пытаюсь проанализировать Wikipedia article view dataset с использованием Amazon EMR. Этот набор данных содержит статистику просмотра страниц за трехмесячный период (1 января 2011 года - 31 марта 2011 года). Я пытаюсь найти статью с наибольшим количеством просмотров за это время. Вот код, я использую:AWS EMR Step не удалось, поскольку созданные задания не удалось
public class mostViews {
public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable views = new IntWritable(1);
private Text article = new Text();
public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
String line = value.toString();
String[] words = line.split(" ");
article.set(words[1]);
views.set(Integer.parseInt(words[2]));
output.collect(article, views);
}
}
public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
int sum = 0;
while (values.hasNext())
{
sum += values.next().get();
}
output.collect(key, new IntWritable(sum));
}
}
public static void main(String[] args) throws Exception {
JobConf conf = new JobConf(mostViews.class);
conf.setJobName("wordcount");
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(Map.class);
conf.setCombinerClass(Reduce.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
JobClient.runJob(conf);
}
}
Сам код работает, но когда я создать кластер и добавить пользовательский баночку, он иногда не но иногда это работает. Использование всего набора данных в качестве входных данных приводит к сбою, но с использованием одного месяца, например, января, он завершается. После запуска, используя весь набор данных, я посмотрел на лог-файл «контроллера» и нашел это, я думаю, это отношение:
2015-03-10T11:50:12.437Z INFO Synchronously wait child process to complete : hadoop jar /mnt/var/lib/hadoop/steps/s-22ZUAWNM...
2015-03-10T12:05:10.505Z INFO Process still running
2015-03-10T12:20:12.573Z INFO Process still running
2015-03-10T12:35:14.642Z INFO Process still running
2015-03-10T12:50:16.711Z INFO Process still running
2015-03-10T13:05:18.779Z INFO Process still running
2015-03-10T13:20:20.848Z INFO Process still running
2015-03-10T13:35:22.916Z INFO Process still running
2015-03-10T13:50:24.986Z INFO Process still running
2015-03-10T14:05:27.056Z INFO Process still running
2015-03-10T14:20:29.126Z INFO Process still running
2015-03-10T14:35:31.196Z INFO Process still running
2015-03-10T14:50:33.266Z INFO Process still running
2015-03-10T15:05:35.337Z INFO Process still running
2015-03-10T15:11:37.366Z INFO waitProcessCompletion ended with exit code 1 : hadoop jar /mnt/var/lib/hadoop/steps/s-22ZUAWNM...
2015-03-10T15:11:40.064Z INFO Step created jobs: job_1425988140328_0001
2015-03-10T15:11:50.072Z WARN Step failed as jobs it created failed. Ids:job_1425988140328_0001
Может кто-нибудь сказать мне, что происходит не так, и что я могу сделать, чтобы исправить это? Тот факт, что он работает в течение одного месяца, но не в течение двух или трех месяцев, заставляет меня думать, что набор данных может быть слишком большим, но я не уверен. Я все еще новичок во всей этой Hadoop/EMR, поэтому, если есть какая-то информация, которую я оставил, просто дайте мне знать. Любая помощь или совет будут очень признательны.
Заранее благодарен!
Вы нашли решение? –
Не совсем, я просто уменьшил размер набора данных, и, похоже, он работал тогда. Я до сих пор не знаю, почему это произошло в первую очередь. – spoon