我目前正试图从一些推特数据中解析小时。 twitter中的时间戳是在epochseconds,我正在使用mapreduce程序来提取并总结每条推文发布的当天时间。我的java代码编译,并且hadoop作业运行,但是我得到一个空白输出。在查看hadoop作业的详细信息后,它告诉我合并的地图输出= 0.我已经尝试了一切,并且不知道为什么这不起作用。即使我没有正确解析日期,我仍然应该返回time = 23
下记录的所有推文,这是我的if else语句列表中的最后一个。我把代码放在下面:
public class TweetHourMapper extends Mapper<Object, Text, Text, IntWritable> {
private Text hour = new Text();
private IntWritable count = new IntWritable(1);
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
String[] fields = value.toString().split(";");
if (fields.length == 4) {
String date = fields[0];
Long aDate = Long.parseLong(date);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(aDate);
int time = calendar.get(Calendar.HOUR);
if (time == 0) {
hour.set("0");
context.write(hour, count);
//Below this i have a list of if else statements writing out if the time== the particular hour.