基本上,我正在尝试使用2个csv文件,因此第一个输入csv文件将由用户输入,但是第二个csv文件我刚刚在Map器代码中定义,那么当Map器继续运行时,是否有某种方法可以在Map器类中定义的第二个csv文件中获得一些值,而不需要一些循环?我这样做的原因是我想使用第二个csv文件中的一个值和第一个Map器中的两个值来生成Map器的一些键值。非常感谢您的帮助和宝贵时间。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class StubMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private Text outkey = new Text();
//private MinMaxCountTuple outTuple = new MinMaxCountTuple();
@Override
public void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
try {
String csvFile = "/workspace/project/src/subject.csv";
if(csvFile.toString().startsWith("BibNumber"))
{
return;
}
String subject[] = csvFile.toString().split(",");
String BookName = subject[1];
if(value.toString().startsWith("BibNumber"))
{
return;
}
String data[] = value.toString().split(",");
String BookType = data[2];
String DateTime = data[5];
SimpleDateFormat frmt = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
Date creationDate = frmt.parse(DateTime);
frmt.applyPattern("dd-MM-yyyy");
String dateTime = frmt.format(creationDate);
outkey.set(BookName + ", " + BookType + ", " + dateTime);
//outUserId.set(userId);
context.write(outkey, new IntWritable(1));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
1条答案
按热度按时间yi0zb3m41#
我相信你需要这样的东西
在map方法中,循环
csvData