按字段分组的Mapper

<strong><span style="font-size:18px;">/***
 * @author YangXin
 * @info 按字段分组的Mapper
 */
package unitTwelve;

import java.io.IOException;
import java.util.regex.Pattern;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class ByKeyMapper extends Mapper<LongWritable, Text, Text, Text>{
	private Pattern splitter = Pattern.compile("\t");
	private int selectedField = 1;
	private int groupByField = 0;

	protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
		String[] fields = splitter.split(value.toString());
		if(fields.length - 1 < selectedField || fields.length - 1 < groupByField){
			context.getCounter("Map", "LinesWithErrors").increment(1);
			return;
		}
		String oKey = fields[groupByField];
		String oValue = fields[selectedField];
		context.write(new Text(oKey), new Text(oValue));
	}
}
</span></strong>

时间: 2024-12-12 11:48:20

按字段分组的Mapper的相关文章

SQL按字段分组取最大(小)值记录(重复记录)

SQL Server 按某一字段分组 取 最大 (小)值所在行的数据 -- 按某一字段分组 取 最大 (小)值所在行的数据 -- (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州) /* 数据如下: name val memo a    2   a2(a的第二个值) a    1   a1--a的第一个值 a    3   a3:a的第三个值 b    1   b1--b的第一个值 b    3   b3:b的第三个值 b    2   b2b2b2b2 b   

按字段分组的Reducer

<strong><span style="font-size:18px;">/*** * @author YangXin * @info 按字段分组的Reducer */ package unitTwelve; import java.io.IOException; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer; public class ByKeyRed

Sql按照字段分组,选取其他字段最值所在的行记录

引言: 为什么会引入这个问题,在程序中遇到这样的问题,在某个数据表中,相同的AID(项目ID)被多次添加到数据表中,所以对应于不同的时间,只想选取添加时间最早的哪一条记录. 参考:红黑联盟 所用到的数据表: 想实现的效果: 解释:相同的ID,由不同的人(Name)添加,我们选取值最小(Val)的那一行记录. 方法如下: 方法一: 1 select a.* from T1 a , 2 (select id,min(val) as val from T1 group by id) b 3 where

MySQL group by 单字分组序和多字段分组

我这里创建了一个 goods 表,先看下里面的数据: mysql> select * from goods; +----+------+------+------------+-------------+------------+ | id | s_id | b_id | goods_name | goods_price | goods_desc | +----+------+------+------------+-------------+------------+ |  1 |    1 

mysql根据某个字段分组根据更新时间获取最新的记录

我现在有一种统计表,要根据一个字段分组然后根据更新时间,每个分组获取最新的一条记录.命名感觉挺简单的一个需求,然而没什么思路,当然是问度娘了. 度娘的答案很统一,然而都不管用,都是报错的,不知道是不是因为mysql5.7的原因,不过我记得group by也是不能查出整条记录的,为什么百度上都可以,百思不得解! 从网上找个例子: 根据USER_ID分组,每个获取 last_updated_date最新的一条记录. SELECT ID,USER_ID,problems,last_updated_da

js对象数组(JSON) 根据某个共同字段 分组

希望的是将下面的对象数组: [ {"id":"1001","name":"值1","value":"111"}, {"id":"1001","name":"值1","value":"11111"}, {"id":"1002",&q

mysql 按表达式或函数分组、多个字段分组、排序

按表达式或函数分组: #案例:按员工的姓名的长度分组,查询每一组的员工个数,筛选员工个数大于五 SELECT COUNT(*),LENGTH(last_name) FROM employees GROUP BY LENGTH(last_name) HAVING COUNT(*)>5; 按多个字段分组:#案例:查询每个部门每个工种的员工的平均工资 SELECT AVG(salary),department_id,job_id FROM employees GROUP BY department_i

group by多字段分组

在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据.比如有一个学生选课表,表结构如下: Table: Subject_Selection Subject Semester Attendee --------------------------------- ITB001 1 John ITB001 1 Bob ITB001 1 Mickey ITB001 2 Jenny ITB001 2 James MKB114 1 John MKB1

group by 多字段分组

在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据.比如有一个学生选课表,表结构如下: Table: Subject_Selection Subject Semester Attendee --------------------------------- ITB001 1 John ITB001 1 Bob ITB001 1 Mickey ITB001 2 Jenny ITB001 2 James MKB114 1 John MKB1