Java 在hadoop中,如何获取值中的最后一个元素
以下是.csv中的一些输入数据,例如:Java 在hadoop中,如何获取值中的最后一个元素,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,以下是.csv中的一些输入数据,例如: url1 a URL2B URL3c URL4d URL5e url1 k url1小时 url2 x url5米 我想要的是: url1小时 url2 x URL3c URL4d url5米 输出,, 但我得到的是: url1 a URL2B URL3c URL4d URL5e 我不知道我的代码出了什么问题,下面是我程序的一些代码: 功能图: public class MergeUrlMapper extends MapReduceBase
- url1 a
- URL2B
- URL3c
- URL4d
- URL5e
- url1 k
- url1小时
- url2 x
- url5米
- url1小时
- url2 x
- URL3c
- URL4d
- url5米
- url1 a
- URL2B
- URL3c
- URL4d
- URL5e
public class MergeUrlMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> {
public void map(LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) throws IOException {
String valueString = value.toString();
String[] UrlHtmlData = valueString.split(",");
output.collect(new Text(UrlHtmlData[0]), new Text(UrlHtmlData[1]));
}
}
公共类MergeUrlMapper扩展MapReduceBase实现Mapper{
公共void映射(LongWritable键、文本值、OutputCollector输出、Reporter报告器)引发IOException{
字符串valueString=value.toString();
字符串[]UrlHtmlData=valueString.split(“,”);
collect(新文本(UrlHtmlData[0])、新文本(UrlHtmlData[1]);
}
}
和功能减少:
public class MergeUrlReducer extends MapReduceBase implements Reducer<Text, Text, Text, Text> {
public void reduce(Text t_key, Iterator<Text> values, OutputCollector<Text,Text> output, Reporter reporter) throws IOException {
Text key = t_key;
// if values is empty,then output will be (t_key,t_key)
Text latestHtml = t_key;
while (values.hasNext()) {
Text temp = values.next();
latestHtml = temp;
}
output.collect(key, latestHtml);
}
}
公共类MergeUrlReducer扩展MapReduceBase实现Reducer{
公共void reduce(Text t_键、迭代器值、OutputCollector输出、Reporter报告器)引发IOException{
文本键=t_键;
//如果值为空,则输出为(t_键,t_键)
Text latestHtml=t_键;
while(values.hasNext()){
Text temp=values.next();
latestHtml=温度;
}
collect(key,latestHtml);
}
}
我的代码有什么问题,输出应该是最后一个值,但实际上它是第一个值。提前谢谢 不能保证值的顺序 如果要按照某种顺序对它们进行排序,则需要将所有迭代器值添加到Arraylist中,然后使用自定义比较器对其调用
Collections.sort
然后在list.size()-1处获取元素
此外,根据您的问题,您的输入不包含逗号,因此请确保使用正确的字符进行拆分 哦,是的,谢谢你提醒我,值的顺序是不保证的,我没有想过。至于没有逗号的问题,正如我在问题描述中提到的,我把输入数据放在.csv中,所以这不是一个问题。非常感谢,伙计。我的观点是url1 a
没有逗号。。。CSV扩展并不重要