Я очень начинающий программист, партнеры по проекту не могут писать код, нуждаются в помощи со школьным проектом сегодня вечером (работали над ним более недели). я
пытаясь найти все описания видео, которые имеют слово
"Fortnite" и более 10000 лайков (данные YouTube с
https://www.kaggle.com/datasnaek/youtube-new). Я получаю доступ к данным из файла CSV, получаю многократные ошибки в части кода Mapper и не могу двигаться дальше, пока я не разрешу их. Это мой первый проект Java / MapReduce / Hadoop, и я просто не понимаю, что я делаю неправильно.
Запуск Java 1.8 и Eclipse IDE 2019-03 в 64-разрядной версии Windows 10.
У меня одинаковая проблема на обоих компьютерах, поэтому я совершенно уверен, что это ошибка пользователя. Я занимаюсь этим уже больше недели и не могу понять.
Clean code:
package mapreduce,project;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.fs.Path;
public class project extends Mapper<LongWritable, Text, Text,
IntWritable>
{
public Text description = new Text();
private IntWritable likes = new IntWritable();
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException{
String line = value.toString();
String str[] = line.split("\t");
if(str.length >= 9){
description.set(str[8]);
}
likes = Integer.parseInt(str[8]);
if (likes >= 10000) {
context.write("Fornite", count);
}
} else {
return;
StringTokenizer itr = new StringTokenizer(line);
while(itr.hasMoreTokens()){
String token = itr.nextToken();
if(token.contains("Fortnite")){
word.set("Fortnite Count");
context.write(word, new IntWritable(1));
}
}
````````````````````````````````````````````````
Code with Errors:
package mapreduce.project;
----> (Error: Main method not found in class
mapreduce.project.project, please define the main method as:
public static void main(String[] args)
public class project extends Mapper<LongWritable, Text, Text,
IntWritable>
{
public Text description = new Text();
private IntWritable likes = new IntWritable();
@Override
public void map(LongWritable key, Text value, Context context)
-----> (ERROR: This sorce attachment does not contain the source for
the file Mapper.class. Change Attached Source....)
throws IOException, InterruptedException{
String line = value.toString();
String str[] = line.split("\t");
if(str.length >= 9){
description.set(str[8]);
}
likes = Integer.parseInt(str[8]); ----> ( ERROR: Type mismatch:
cannot convert from int to INTWritable)
if (likes >= 10000) { ----->(ERROR: the operator >= is undefined for
the argument type(0) IntWriteable, int)
context.write("Fornite", count); (ERROR------> count cannot be
resolved to a variable)
}
} else { ----->syntax error on "else" delete this token)
return;
StringTokenizer itr = new StringTokenizer(line);
while(itr.hasMoreTokens()){
String token = itr.nextToken();
if(token.contains("Fortnite")){
word.set("Fortnite Count");
context.write(word, new IntWritable(1));
}
}
Running the YouTube data through the MapReduce program, we expect to
obtain a list of YouTube videos that mention Fortnite in the description
have over 10,000 views.